initial buildroot for linux 5.15

This commit is contained in:
Huan.Feng
2021-12-06 14:12:13 +08:00
parent d7767d594e
commit 7b6fc358fa
12736 changed files with 508822 additions and 0 deletions
@@ -0,0 +1,18 @@
configure.ac: disable -Werror
Disable the mandatory flag -Werror in configure.ac.
Signed-off-by: Karoly Kasza <kaszak@gmail.com>
--- open-vm-tools/configure.ac 2015-06-17 10:02:00.000000000 +0200
+++ open-vm-tools/configure.ac 2015-06-17 10:02:00.000000000 +0200
@@ -935,7 +935,7 @@
### General flags / actions
CFLAGS="$CFLAGS -Wall"
-CFLAGS="$CFLAGS -Werror"
+# CFLAGS="$CFLAGS -Werror"
# -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident'
# in Xlib.h on OpenSolaris.
@@ -0,0 +1,21 @@
m4: do not force -I/usr/include in CPPFLAGS
This is so horribly broken for cross-compilation. :-(
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
--- open-vm-tools/m4/vmtools.m4 2015-06-17 10:03:00.000000000 +0200
+++ open-vm-tools/m4/vmtools.m4 2015-06-17 10:03:00.000000000 +0200
@@ -281,10 +281,10 @@
if test "$os" = freebsd; then
CUSTOM_$1_CPPFLAGS="-I/usr/local/include"
else
- CUSTOM_$1_CPPFLAGS="-I/usr/include"
+ CUSTOM_$1_CPPFLAGS=" "
fi
if test -n "$2"; then
- CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2"
+ : CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2"
fi
fi
])
@@ -0,0 +1,798 @@
From 9d13e32e362ad3ce5169f49b7f0fe1d9380e558c Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Mon, 30 Sep 2019 13:32:35 +0200
Subject: [PATCH] Rename poll.h into vm_poll.h to fix build failure on musl
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
musl libc redirects include of sys/poll.h to poll.h. But since poll.h is
also a local header file, the musl libc header is never included. This
leads to the following build failure:
In file included from asyncsocket.c:73:0:
.../host/i586-buildroot-linux-musl/sysroot/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
#warning redirecting incorrect #include <sys/poll.h> to <poll.h>
asyncsocket.c: In function AsyncTCPSocketPollWork:
asyncsocket.c:2537:13: error: invalid use of undefined type struct pollfd
pfd[i].fd = asock[i]->fd;
^
asyncsocket.c:2537:13: error: dereferencing pointer to incomplete type struct pollfd
asyncsocket.c:2538:13: error: invalid use of undefined type struct pollfd
pfd[i].events = read ? POLLIN : POLLOUT;
^
asyncsocket.c:2538:33: error: POLLIN undeclared (first use in this function); did you mean POLL_IN?
pfd[i].events = read ? POLLIN : POLLOUT;
So rename poll.h into vm_poll.h as suggested by srowe in
https://github.com/vmware/open-vm-tools/issues/359#issuecomment-533529956
Fixes:
- http://autobuild.buildroot.org/results/4f575ef42bbc4387a07e396205052b2da081c64d
Fix #359
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
[Upstream status: https://github.com/vmware/open-vm-tools/pull/383]
---
lib/asyncsocket/asyncsocket.c | 4 +-
lib/hgfsServer/hgfsServer.c | 2 +-
lib/include/asyncsocket.h | 2 +-
lib/include/poll.h | 330 --------------------
lib/include/pollImpl.h | 2 +-
lib/include/vm_poll.h | 330 ++++++++++++++++++++
lib/rpcIn/rpcin.c | 2 +-
7 files changed, 336 insertions(+), 336 deletions(-)
delete mode 100644 open-vm-tools/lib/include/poll.h
create mode 100644 open-vm-tools/lib/include/vm_poll.h
diff --git a/lib/asyncsocket/asyncsocket.c b/lib/asyncsocket/asyncsocket.c
index 102638cc..01181a95 100644
--- a/lib/asyncsocket/asyncsocket.c
+++ b/lib/asyncsocket/asyncsocket.c
@@ -69,8 +69,8 @@
#else
#include <stddef.h>
#include <ctype.h>
+#include <poll.h>
#include <sys/types.h>
-#include <sys/poll.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netdb.h>
@@ -86,7 +86,7 @@
#include "random.h"
#include "asyncsocket.h"
#include "asyncSocketBase.h"
-#include "poll.h"
+#include "vm_poll.h"
#include "log.h"
#include "err.h"
#include "hostinfo.h"
diff --git a/lib/hgfsServer/hgfsServer.c b/lib/hgfsServer/hgfsServer.c
index 46224551..fc691286 100644
--- a/lib/hgfsServer/hgfsServer.c
+++ b/lib/hgfsServer/hgfsServer.c
@@ -48,7 +48,7 @@
#include "hgfsServerOplock.h"
#include "hgfsDirNotify.h"
#include "userlock.h"
-#include "poll.h"
+#include "vm_poll.h"
#include "mutexRankLib.h"
#include "vm_basic_asm.h"
#include "unicodeOperations.h"
diff --git a/lib/include/asyncsocket.h b/lib/include/asyncsocket.h
index 95a5e464..a4b4e5aa 100644
--- a/lib/include/asyncsocket.h
+++ b/lib/include/asyncsocket.h
@@ -164,7 +164,7 @@ typedef struct AsyncSocket AsyncSocket;
* Or the client can specify its favorite poll class and locking behavior.
* Use of IVmdbPoll is only supported for regular sockets and for Attach.
*/
-#include "poll.h"
+#include "vm_poll.h"
struct IVmdbPoll;
typedef struct AsyncSocketPollParams {
int flags; /* Default 0, only POLL_FLAG_NO_BULL is valid */
diff --git a/lib/include/poll.h b/lib/include/poll.h
deleted file mode 100644
index 6acd4f35..00000000
--- a/lib/include/poll.h
+++ /dev/null
@@ -1,330 +0,0 @@
-/*********************************************************
- * Copyright (C) 1998-2018 VMware, Inc. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation version 2.1 and no later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- *********************************************************/
-
-/*********************************************************
- * The contents of this file are subject to the terms of the Common
- * Development and Distribution License (the "License") version 1.0
- * and no later version. You may not use this file except in
- * compliance with the License.
- *
- * You can obtain a copy of the License at
- * http://www.opensource.org/licenses/cddl1.php
- *
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- *********************************************************/
-
-
-#ifndef _POLL_H_
-#define _POLL_H_
-
-#define INCLUDE_ALLOW_USERLEVEL
-#define INCLUDE_ALLOW_VMCORE
-#include "includeCheck.h"
-
-#include "vm_basic_types.h"
-#include "vm_basic_defs.h"
-#include "vmware.h"
-#include "userlock.h"
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#ifdef _WIN32
-#define HZ 100
-#elif defined linux
-#include <asm/param.h>
-#elif __APPLE__
-#include <TargetConditionals.h>
-/*
- * Old SDKs don't define TARGET_OS_IPHONE at all.
- * New ones define it to 0 on Mac OS X, 1 on iOS.
- */
-#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
-#include <sys/kernel.h>
-#endif
-#include <sys/poll.h>
-#define HZ 100
-#endif
-#ifdef __ANDROID__
-/*
- * <poll.h> of android should be included, but its name is same
- * with this file. So its content is put here to avoid conflict.
- */
-#include <asm/poll.h>
-#define HZ 100
-typedef unsigned int nfds_t;
-int poll(struct pollfd *, nfds_t, long);
-#endif
-
-
-/*
- * Poll event types: each type has a different reason for firing,
- * or condition that must be met before firing.
- */
-
-typedef enum {
- /*
- * Actual Poll queue types against which you can register callbacks.
- */
- POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */
- POLL_VTIME = 0,
- POLL_REALTIME,
- POLL_DEVICE,
- POLL_MAIN_LOOP,
- POLL_NUM_QUEUES
-} PollEventType;
-
-
-/*
- * Classes of events
- *
- * These are the predefined classes. More can be declared
- * with Poll_AllocClass().
- */
-
-typedef enum PollClass {
- POLL_CLASS_MAIN,
- POLL_CLASS_PAUSE,
- POLL_CLASS_IPC,
- POLL_CLASS_CPT,
- POLL_CLASS_MKS,
- POLL_FIXED_CLASSES,
- POLL_DEFAULT_FIXED_CLASSES,
- /* Size enum to maximum */
- POLL_MAX_CLASSES = 31,
-} PollClass;
-
-/*
- * Do not use; Special pseudo private poll class supported by
- * PollDefault only
- */
-#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES
-#define POLL_DEFAULT_CS_NET PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET)
-
-/*
- * Each callback is registered in a set of classes
- */
-
-typedef struct PollClassSet {
- uintptr_t bits;
-} PollClassSet;
-
-/* An empty PollClassSet. */
-static INLINE PollClassSet
-PollClassSet_Empty(void)
-{
- PollClassSet set = { 0 };
- return set;
-}
-
-/* A PollClassSet with the single member. */
-static INLINE PollClassSet
-PollClassSet_Singleton(PollClass c)
-{
- PollClassSet s = PollClassSet_Empty();
-
- ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8);
- ASSERT(c < POLL_MAX_CLASSES);
-
- s.bits = CONST3264U(1) << c;
- return s;
-}
-
-/* Combine two PollClassSets. */
-static INLINE PollClassSet
-PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)
-{
- PollClassSet set;
- set.bits = lhs.bits | rhs.bits;
- return set;
-}
-
-/* Add single class to PollClassSet. */
-static INLINE PollClassSet
-PollClassSet_Include(PollClassSet set, PollClass c)
-{
- return PollClassSet_Union(set, PollClassSet_Singleton(c));
-}
-
-
-#define POLL_CS_MAIN PollClassSet_Singleton(POLL_CLASS_MAIN)
-#define POLL_CS_PAUSE PollClassSet_Union(POLL_CS_MAIN, \
- PollClassSet_Singleton(POLL_CLASS_PAUSE))
-#define POLL_CS_CPT PollClassSet_Union(POLL_CS_PAUSE, \
- PollClassSet_Singleton(POLL_CLASS_CPT))
-#define POLL_CS_IPC PollClassSet_Union(POLL_CS_CPT, \
- PollClassSet_Singleton(POLL_CLASS_IPC))
-#define POLL_CS_VMDB POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */
-#define POLL_CS_MKS PollClassSet_Singleton(POLL_CLASS_MKS)
-/*
- * DANGER. You don't need POLL_CS_ALWAYS. Really. So don't use it.
- */
-#define POLL_CS_ALWAYS PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)
-
-/*
- * Poll class-set taxonomy:
- * POLL_CS_MAIN
- * - Unless you NEED another class, use POLL_CS_MAIN.
- * POLL_CS_PAUSE
- * - For callbacks that must occur even if the guest is paused.
- * Most VMDB or Foundry commands are in this category.
- * POLL_CS_CPT
- * - Only for callbacks which can trigger intermediate Checkpoint
- * transitions.
- * The ONLY such callback is Migrate.
- * POLL_CS_IPC
- * - Only for callbacks which can contain Msg_(Post|Hint|Question)
- * responses, and for signal handlers (why)?
- * Vigor, VMDB, and Foundry can contain Msg_* responses.
- * POLL_CS_MKS
- * - Callback runs in MKS thread.
- * POLL_CS_ALWAYS
- * - Only for events that must be processed immediately.
- * The ONLY such callback is OvhdMemVmxSizeCheck.
- */
-
-
-/*
- * Poll_Callback flags
- */
-
-#define POLL_FLAG_PERIODIC 0x01 // keep after firing
-#define POLL_FLAG_REMOVE_AT_POWEROFF 0x02 // self-explanatory
-#define POLL_FLAG_READ 0x04 // device is ready for reading
-#define POLL_FLAG_WRITE 0x08 // device is ready for writing
-#define POLL_FLAG_SOCKET 0x10 // device is a Windows socket
-#define POLL_FLAG_NO_BULL 0x20 // callback does its own locking
-#define POLL_FLAG_WINSOCK 0x40 // Winsock style write events
-#define POLL_FLAG_FD 0x80 // device is a Windows file descriptor.
-#define POLL_FLAG_ACCEPT_INVALID_FDS 0x100 // For broken 3rd party libs, e.g. curl
-#define POLL_FLAG_THUNK_TO_WND 0x200 // thunk callback to window message loop
-
-
-typedef void (*PollerFunction)(void *clientData);
-typedef void (*PollerFireWrapper)(PollerFunction func,
- void *funcData,
- void *wrapperData);
-typedef Bool (*PollerErrorFn)(const char *errorStr);
-
-/*
- * Initialisers:
- *
- * For the sake of convenience, we declare the initialisers
- * for custom implmentations here, even though the actual
- * implementations are distinct from the core poll code.
- */
-
-typedef struct PollOptions {
- Bool locked; // Use internal MXUser for locking
- Bool allowFullQueue; // Don't assert when device event queue is full.
- VThreadID windowsMsgThread; // thread that processes Windows messages
- PollerFireWrapper fireWrapperFn; // optional; may be useful for stats
- void *fireWrapperData; // optional
- PollerErrorFn errorFn; // optional; called upon unrecoverable error
-} PollOptions;
-
-
-void Poll_InitDefault(void);
-void Poll_InitDefaultEx(const PollOptions *opts);
-void Poll_InitGtk(void); // On top of glib for Linux
-void Poll_InitCF(void); // On top of CoreFoundation for OSX
-
-
-/*
- * Functions
- */
-int Poll_SocketPair(Bool vmci, Bool stream, int fds[2]);
-void Poll_Loop(Bool loop, Bool *exit, PollClass c);
-void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);
-Bool Poll_LockingEnabled(void);
-void Poll_Exit(void);
-
-
-/*
- * Poll_Callback adds a callback regardless of whether an identical one exists.
- * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of
- * one read and one write callback per fd.
- *
- * Poll_CallbackRemove removes one callback. If there are multiple identical
- * callbacks, which one is removed is an implementation detail. Note that in
- * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to
- * create the callback is not specified when removing, so all callbacks
- * of those types with the same flags, function, and clientData are considered
- * "identical" even if their fd/delay differed.
- */
-
-VMwareStatus Poll_Callback(PollClassSet classSet,
- int flags,
- PollerFunction f,
- void *clientData,
- PollEventType type,
- PollDevHandle info, // fd/microsec delay
- MXUserRecLock *lck);
-Bool Poll_CallbackRemove(PollClassSet classSet,
- int flags,
- PollerFunction f,
- void *clientData,
- PollEventType type);
-Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,
- int flags,
- PollerFunction f,
- PollEventType type,
- void **clientData);
-
-void Poll_NotifyChange(PollClassSet classSet);
-
-/*
- * Wrappers for Poll_Callback and Poll_CallbackRemove that present
- * simpler subsets of those interfaces.
- */
-
-VMwareStatus Poll_CB_Device(PollerFunction f,
- void *clientData,
- PollDevHandle device,
- Bool periodic);
-
-Bool Poll_CB_DeviceRemove(PollerFunction f,
- void *clientData,
- Bool periodic);
-
-
-VMwareStatus Poll_CB_RTime(PollerFunction f,
- void *clientData,
- int64 delay, // microseconds
- Bool periodic,
- MXUserRecLock *lock);
-
-Bool Poll_CB_RTimeRemove(PollerFunction f,
- void *clientData,
- Bool periodic);
-
-
-#ifdef _WIN32
-void Poll_SetPumpsWindowsMessages(Bool pumps);
-void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);
-Bool Poll_FireWndCallback(void *lparam);
-#endif
-
-#if defined(__cplusplus)
-} // extern "C"
-#endif
-
-#endif // _POLL_H_
diff --git a/lib/include/pollImpl.h b/lib/include/pollImpl.h
index 46442e55..8bc66997 100644
--- a/lib/include/pollImpl.h
+++ b/lib/include/pollImpl.h
@@ -44,7 +44,7 @@
#define INCLUDE_ALLOW_USERLEVEL
#include "includeCheck.h"
-#include "poll.h"
+#include "vm_poll.h"
#include "vm_basic_asm.h"
#if defined(__cplusplus)
diff --git a/lib/include/vm_poll.h b/lib/include/vm_poll.h
new file mode 100644
index 00000000..6acd4f35
--- /dev/null
+++ b/lib/include/vm_poll.h
@@ -0,0 +1,330 @@
+/*********************************************************
+ * Copyright (C) 1998-2018 VMware, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation version 2.1 and no later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ *********************************************************/
+
+/*********************************************************
+ * The contents of this file are subject to the terms of the Common
+ * Development and Distribution License (the "License") version 1.0
+ * and no later version. You may not use this file except in
+ * compliance with the License.
+ *
+ * You can obtain a copy of the License at
+ * http://www.opensource.org/licenses/cddl1.php
+ *
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ *********************************************************/
+
+
+#ifndef _POLL_H_
+#define _POLL_H_
+
+#define INCLUDE_ALLOW_USERLEVEL
+#define INCLUDE_ALLOW_VMCORE
+#include "includeCheck.h"
+
+#include "vm_basic_types.h"
+#include "vm_basic_defs.h"
+#include "vmware.h"
+#include "userlock.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifdef _WIN32
+#define HZ 100
+#elif defined linux
+#include <asm/param.h>
+#elif __APPLE__
+#include <TargetConditionals.h>
+/*
+ * Old SDKs don't define TARGET_OS_IPHONE at all.
+ * New ones define it to 0 on Mac OS X, 1 on iOS.
+ */
+#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
+#include <sys/kernel.h>
+#endif
+#include <sys/poll.h>
+#define HZ 100
+#endif
+#ifdef __ANDROID__
+/*
+ * <poll.h> of android should be included, but its name is same
+ * with this file. So its content is put here to avoid conflict.
+ */
+#include <asm/poll.h>
+#define HZ 100
+typedef unsigned int nfds_t;
+int poll(struct pollfd *, nfds_t, long);
+#endif
+
+
+/*
+ * Poll event types: each type has a different reason for firing,
+ * or condition that must be met before firing.
+ */
+
+typedef enum {
+ /*
+ * Actual Poll queue types against which you can register callbacks.
+ */
+ POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */
+ POLL_VTIME = 0,
+ POLL_REALTIME,
+ POLL_DEVICE,
+ POLL_MAIN_LOOP,
+ POLL_NUM_QUEUES
+} PollEventType;
+
+
+/*
+ * Classes of events
+ *
+ * These are the predefined classes. More can be declared
+ * with Poll_AllocClass().
+ */
+
+typedef enum PollClass {
+ POLL_CLASS_MAIN,
+ POLL_CLASS_PAUSE,
+ POLL_CLASS_IPC,
+ POLL_CLASS_CPT,
+ POLL_CLASS_MKS,
+ POLL_FIXED_CLASSES,
+ POLL_DEFAULT_FIXED_CLASSES,
+ /* Size enum to maximum */
+ POLL_MAX_CLASSES = 31,
+} PollClass;
+
+/*
+ * Do not use; Special pseudo private poll class supported by
+ * PollDefault only
+ */
+#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES
+#define POLL_DEFAULT_CS_NET PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET)
+
+/*
+ * Each callback is registered in a set of classes
+ */
+
+typedef struct PollClassSet {
+ uintptr_t bits;
+} PollClassSet;
+
+/* An empty PollClassSet. */
+static INLINE PollClassSet
+PollClassSet_Empty(void)
+{
+ PollClassSet set = { 0 };
+ return set;
+}
+
+/* A PollClassSet with the single member. */
+static INLINE PollClassSet
+PollClassSet_Singleton(PollClass c)
+{
+ PollClassSet s = PollClassSet_Empty();
+
+ ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8);
+ ASSERT(c < POLL_MAX_CLASSES);
+
+ s.bits = CONST3264U(1) << c;
+ return s;
+}
+
+/* Combine two PollClassSets. */
+static INLINE PollClassSet
+PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)
+{
+ PollClassSet set;
+ set.bits = lhs.bits | rhs.bits;
+ return set;
+}
+
+/* Add single class to PollClassSet. */
+static INLINE PollClassSet
+PollClassSet_Include(PollClassSet set, PollClass c)
+{
+ return PollClassSet_Union(set, PollClassSet_Singleton(c));
+}
+
+
+#define POLL_CS_MAIN PollClassSet_Singleton(POLL_CLASS_MAIN)
+#define POLL_CS_PAUSE PollClassSet_Union(POLL_CS_MAIN, \
+ PollClassSet_Singleton(POLL_CLASS_PAUSE))
+#define POLL_CS_CPT PollClassSet_Union(POLL_CS_PAUSE, \
+ PollClassSet_Singleton(POLL_CLASS_CPT))
+#define POLL_CS_IPC PollClassSet_Union(POLL_CS_CPT, \
+ PollClassSet_Singleton(POLL_CLASS_IPC))
+#define POLL_CS_VMDB POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */
+#define POLL_CS_MKS PollClassSet_Singleton(POLL_CLASS_MKS)
+/*
+ * DANGER. You don't need POLL_CS_ALWAYS. Really. So don't use it.
+ */
+#define POLL_CS_ALWAYS PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)
+
+/*
+ * Poll class-set taxonomy:
+ * POLL_CS_MAIN
+ * - Unless you NEED another class, use POLL_CS_MAIN.
+ * POLL_CS_PAUSE
+ * - For callbacks that must occur even if the guest is paused.
+ * Most VMDB or Foundry commands are in this category.
+ * POLL_CS_CPT
+ * - Only for callbacks which can trigger intermediate Checkpoint
+ * transitions.
+ * The ONLY such callback is Migrate.
+ * POLL_CS_IPC
+ * - Only for callbacks which can contain Msg_(Post|Hint|Question)
+ * responses, and for signal handlers (why)?
+ * Vigor, VMDB, and Foundry can contain Msg_* responses.
+ * POLL_CS_MKS
+ * - Callback runs in MKS thread.
+ * POLL_CS_ALWAYS
+ * - Only for events that must be processed immediately.
+ * The ONLY such callback is OvhdMemVmxSizeCheck.
+ */
+
+
+/*
+ * Poll_Callback flags
+ */
+
+#define POLL_FLAG_PERIODIC 0x01 // keep after firing
+#define POLL_FLAG_REMOVE_AT_POWEROFF 0x02 // self-explanatory
+#define POLL_FLAG_READ 0x04 // device is ready for reading
+#define POLL_FLAG_WRITE 0x08 // device is ready for writing
+#define POLL_FLAG_SOCKET 0x10 // device is a Windows socket
+#define POLL_FLAG_NO_BULL 0x20 // callback does its own locking
+#define POLL_FLAG_WINSOCK 0x40 // Winsock style write events
+#define POLL_FLAG_FD 0x80 // device is a Windows file descriptor.
+#define POLL_FLAG_ACCEPT_INVALID_FDS 0x100 // For broken 3rd party libs, e.g. curl
+#define POLL_FLAG_THUNK_TO_WND 0x200 // thunk callback to window message loop
+
+
+typedef void (*PollerFunction)(void *clientData);
+typedef void (*PollerFireWrapper)(PollerFunction func,
+ void *funcData,
+ void *wrapperData);
+typedef Bool (*PollerErrorFn)(const char *errorStr);
+
+/*
+ * Initialisers:
+ *
+ * For the sake of convenience, we declare the initialisers
+ * for custom implmentations here, even though the actual
+ * implementations are distinct from the core poll code.
+ */
+
+typedef struct PollOptions {
+ Bool locked; // Use internal MXUser for locking
+ Bool allowFullQueue; // Don't assert when device event queue is full.
+ VThreadID windowsMsgThread; // thread that processes Windows messages
+ PollerFireWrapper fireWrapperFn; // optional; may be useful for stats
+ void *fireWrapperData; // optional
+ PollerErrorFn errorFn; // optional; called upon unrecoverable error
+} PollOptions;
+
+
+void Poll_InitDefault(void);
+void Poll_InitDefaultEx(const PollOptions *opts);
+void Poll_InitGtk(void); // On top of glib for Linux
+void Poll_InitCF(void); // On top of CoreFoundation for OSX
+
+
+/*
+ * Functions
+ */
+int Poll_SocketPair(Bool vmci, Bool stream, int fds[2]);
+void Poll_Loop(Bool loop, Bool *exit, PollClass c);
+void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);
+Bool Poll_LockingEnabled(void);
+void Poll_Exit(void);
+
+
+/*
+ * Poll_Callback adds a callback regardless of whether an identical one exists.
+ * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of
+ * one read and one write callback per fd.
+ *
+ * Poll_CallbackRemove removes one callback. If there are multiple identical
+ * callbacks, which one is removed is an implementation detail. Note that in
+ * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to
+ * create the callback is not specified when removing, so all callbacks
+ * of those types with the same flags, function, and clientData are considered
+ * "identical" even if their fd/delay differed.
+ */
+
+VMwareStatus Poll_Callback(PollClassSet classSet,
+ int flags,
+ PollerFunction f,
+ void *clientData,
+ PollEventType type,
+ PollDevHandle info, // fd/microsec delay
+ MXUserRecLock *lck);
+Bool Poll_CallbackRemove(PollClassSet classSet,
+ int flags,
+ PollerFunction f,
+ void *clientData,
+ PollEventType type);
+Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,
+ int flags,
+ PollerFunction f,
+ PollEventType type,
+ void **clientData);
+
+void Poll_NotifyChange(PollClassSet classSet);
+
+/*
+ * Wrappers for Poll_Callback and Poll_CallbackRemove that present
+ * simpler subsets of those interfaces.
+ */
+
+VMwareStatus Poll_CB_Device(PollerFunction f,
+ void *clientData,
+ PollDevHandle device,
+ Bool periodic);
+
+Bool Poll_CB_DeviceRemove(PollerFunction f,
+ void *clientData,
+ Bool periodic);
+
+
+VMwareStatus Poll_CB_RTime(PollerFunction f,
+ void *clientData,
+ int64 delay, // microseconds
+ Bool periodic,
+ MXUserRecLock *lock);
+
+Bool Poll_CB_RTimeRemove(PollerFunction f,
+ void *clientData,
+ Bool periodic);
+
+
+#ifdef _WIN32
+void Poll_SetPumpsWindowsMessages(Bool pumps);
+void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);
+Bool Poll_FireWndCallback(void *lparam);
+#endif
+
+#if defined(__cplusplus)
+} // extern "C"
+#endif
+
+#endif // _POLL_H_
diff --git a/lib/rpcIn/rpcin.c b/lib/rpcIn/rpcin.c
index 47a3380e..660382c6 100644
--- a/lib/rpcIn/rpcin.c
+++ b/lib/rpcIn/rpcin.c
@@ -57,7 +57,7 @@
#if defined(VMTOOLS_USE_VSOCKET)
# include <glib.h>
-# include "poll.h"
+# include "vm_poll.h"
# include "asyncsocket.h"
# include "vmci_defs.h"
#include "dataMap.h"
--
2.23.0
@@ -0,0 +1,27 @@
From a0983d84185f04c4e40778fe951fde4439894882 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 16 Jul 2017 07:37:03 -0700
Subject: [PATCH] Remove assumptions about glibc being only libc
implementation on linux
Signed-off-by: Khem Raj <raj.khem@gmail.com>
[Retrieved (and updated to work on current version) from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Remove-assumptions-about-glibc-being-only-libc-imple.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
open-vm-tools/lib/file/fileIOPosix.c | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
Index: open-vm-tools/lib/file/fileIOPosix.c
===================================================================
--- open-vm-tools.orig/lib/file/fileIOPosix.c
+++ open-vm-tools/lib/file/fileIOPosix.c
@@ -205,7 +205,7 @@ static AlignedPool alignedPool;
* are not available in any header file.
*/
-#if defined(__linux__) && !defined(__ANDROID__)
+#if defined(__linux__) && defined(__GLIBC__)
#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
/*
* We want preadv/pwritev. But due to FOB=64, the symbols are -64.
@@ -0,0 +1,48 @@
From bf1eafb07297711baf9320b1edcca8a3376f117d Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 09:03:00 +0000
Subject: [PATCH] Use configure test for struct timespec
Use the configure script to test for struct time spec instead of trying
to keep track of what platforms has it.
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
[Retrieved from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-test-for-struct-timespec.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
open-vm-tools/configure.ac | 1 +
open-vm-tools/lib/include/hgfsUtil.h | 8 +-------
2 files changed, 2 insertions(+), 7 deletions(-)
Index: open-vm-tools/configure.ac
===================================================================
--- open-vm-tools.orig/configure.ac
+++ open-vm-tools/configure.ac
@@ -1127,6 +1127,7 @@ AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_CHECK_MEMBERS([struct stat.st_rdev])
+AC_CHECK_MEMBERS([struct timespec.tv_sec],[],[],[[#include <time.h>]])
AC_HEADER_TIME
AC_STRUCT_TM
AC_C_VOLATILE
Index: open-vm-tools/lib/include/hgfsUtil.h
===================================================================
--- open-vm-tools.orig/lib/include/hgfsUtil.h
+++ open-vm-tools/lib/include/hgfsUtil.h
@@ -53,13 +53,7 @@
# include <time.h>
# endif
# include "vm_basic_types.h"
-# if !defined _STRUCT_TIMESPEC && \
- !defined _TIMESPEC_DECLARED && \
- !defined __timespec_defined && \
- !defined sun && \
- !defined __FreeBSD__ && \
- !__APPLE__ && \
- !defined _WIN32
+# if !defined HAVE_STRUCT_TIMESPEC_TV_SEC
struct timespec {
time_t tv_sec;
long tv_nsec;
@@ -0,0 +1,61 @@
From 31ae6f42458f90d4994a4ad8e2b7673691612c36 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 09:10:14 +0000
Subject: [PATCH] Fix definition of ALLPERMS and ACCESSPERMS
The ALLPERMS and ACCESSPERMS defines are not specified in POSIX so
assume it is not there instead of testing for specific implementations.
This is needed for musl libc.
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
[Retrieved from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 8 +++++---
open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c | 3 +--
2 files changed, 6 insertions(+), 5 deletions(-)
Index: open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
===================================================================
--- open-vm-tools.orig/lib/hgfsServer/hgfsServerLinux.c
+++ open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
@@ -107,11 +107,13 @@ typedef struct DirectoryEntry {
#endif
/*
- * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not defined in the
- * Solaris version of <sys/stat.h>.
+ * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not specified in
+ * POSIX.
*/
-#ifdef sun
+#ifndef ACCESSPERMS
# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
+#endif
+#ifndef ALLPERMS
# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
#endif
Index: open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
===================================================================
--- open-vm-tools.orig/services/plugins/dndcp/dnd/dndLinux.c
+++ open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
@@ -51,7 +51,7 @@
#define DND_ROOTDIR_PERMS (S_IRWXU | S_IRWXG | S_IRWXO)
#define DND_STAGINGDIR_PERMS (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
-#ifdef sun
+#ifndef ACCESSPERMS
#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
#endif
#ifdef __ANDROID__
@@ -60,7 +60,6 @@
*/
#define NO_SETMNTENT
#define NO_ENDMNTENT
-#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
#endif
@@ -0,0 +1,150 @@
From 6cc1c22cc30320f56da552a76bd956db8f255b6a Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 10:05:07 +0000
Subject: [PATCH] Use configure to test for feature instead of platform
Test for various functions instead of trying to keep track of what
platform and what version of the given platform has support for what.
This should make it easier to port to currently unknown platforms and
will solve the issue if a platform add support for a missing feature in
the future.
The features we test for are:
- getifaddrs
- getauxval
- issetugid
- __secure_getenv
This is needed for musl libc.
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
[Retrieved (and slightly updated) from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
open-vm-tools/configure.ac | 4 ++++
open-vm-tools/lib/misc/idLinux.c | 30 ++++++++++++++----------------
open-vm-tools/lib/nicInfo/nicInfoPosix.c | 8 ++++++--
3 files changed, 24 insertions(+), 18 deletions(-)
Index: open-vm-tools/configure.ac
===================================================================
--- open-vm-tools.orig/configure.ac
+++ open-vm-tools/configure.ac
@@ -798,6 +798,7 @@ AC_CHECK_FUNCS(
AC_CHECK_FUNCS([ecvt])
AC_CHECK_FUNCS([fcvt])
+AC_CHECK_FUNCS([getifaddrs getauxval issetugid __secure_getenv])
AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes])
@@ -1063,10 +1064,13 @@ AC_PATH_PROG(
###
AC_CHECK_HEADERS([crypt.h])
+AC_CHECK_HEADERS([ifaddrs.h])
AC_CHECK_HEADERS([inttypes.h])
AC_CHECK_HEADERS([stdint.h])
AC_CHECK_HEADERS([stdlib.h])
AC_CHECK_HEADERS([wchar.h])
+AC_CHECK_HEADERS([net/if.h])
+AC_CHECK_HEADERS([sys/auxv.h])
AC_CHECK_HEADERS([sys/inttypes.h])
AC_CHECK_HEADERS([sys/io.h])
AC_CHECK_HEADERS([sys/param.h]) # Required to make the sys/user.h check work correctly on FreeBSD
Index: open-vm-tools/lib/misc/idLinux.c
===================================================================
--- open-vm-tools.orig/lib/misc/idLinux.c
+++ open-vm-tools/lib/misc/idLinux.c
@@ -27,12 +27,9 @@
#include <sys/syscall.h>
#include <string.h>
#include <unistd.h>
-#ifdef __linux__
-#if defined(__GLIBC__) && \
- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
+#ifdef HAVE_SYS_AUXV_H
#include <sys/auxv.h>
#endif
-#endif
#ifdef __APPLE__
#include <sys/socket.h>
#include <TargetConditionals.h>
@@ -997,31 +994,32 @@ Id_EndSuperUser(uid_t uid) // IN:
static Bool
IdIsSetUGid(void)
{
-#if defined(__ANDROID__)
- /* Android does not have a secure_getenv, so be conservative. */
- return TRUE;
-#else
/*
* We use __secure_getenv, which returns NULL if the binary is
- * setuid or setgid. Alternatives include,
+ * setuid or setgid, when issetugid or getauxval(AT_SECURE) is not
+ * available. Alternatives include,
*
- * a) getauxval(AT_SECURE); not available until glibc 2.16.
- * b) __libc_enable_secure; may not be exported.
+ * a) issetugid(); not (yet?) available in glibc.
+ * b) getauxval(AT_SECURE); not available until glibc 2.16.
+ * c) __libc_enable_secure; may not be exported.
*
- * Use (a) when we are based on glibc 2.16, or newer.
+ * Use (b) when we are based on glibc 2.16, or newer.
*/
-#if defined(__GLIBC__) && \
- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
+#if HAVE_ISSETUGID
+ return issetugid();
+#elif HAVE_GETAUXVAL
return getauxval(AT_SECURE) != 0;
-#else
+#elif HAVE___SECURE_GETENV
static const char envName[] = "VMW_SETUGID_TEST";
if (setenv(envName, "1", TRUE) == -1) {
return TRUE; /* Conservative */
}
return __secure_getenv(envName) == NULL;
-#endif
+#else
+ /* Android does not have a secure_getenv, so be conservative. */
+ return TRUE;
#endif
}
#endif
Index: open-vm-tools/lib/nicInfo/nicInfoPosix.c
===================================================================
--- open-vm-tools.orig/lib/nicInfo/nicInfoPosix.c
+++ open-vm-tools/lib/nicInfo/nicInfoPosix.c
@@ -34,9 +34,13 @@
#include <sys/socket.h>
#include <sys/stat.h>
#include <errno.h>
-#if defined(__FreeBSD__) || defined(__APPLE__)
+#if HAVE_SYS_SYSCTL_H
# include <sys/sysctl.h>
+#endif
+#if HAVE_IFADDRS_H
# include <ifaddrs.h>
+#endif
+#if HAVE_NET_IF_H
# include <net/if.h>
#endif
#ifndef NO_DNET
@@ -348,10 +352,7 @@ GuestInfoGetNicInfo(NicInfoV3 *nicInfo)
*
******************************************************************************
*/
-#if defined(__FreeBSD__) || \
- defined(__APPLE__) || \
- defined(USERWORLD) || \
- (defined(__linux__) && defined(NO_DNET))
+#if defined(NO_DNET) && defined(HAVE_GETIFADDRS)
char *
GuestInfoGetPrimaryIP(void)
@@ -0,0 +1,28 @@
From 95c6184d9ff70a47c41768850923a96de9e544aa Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 10:41:01 +0000
Subject: [PATCH] Use configure test for sys/stat.h include
This is needed for musl libc.
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
[Retrieved from:
http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-configure-test-for-sys-stat.h-include.patch?h=sumo]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
open-vm-tools/services/plugins/vix/vixTools.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: open-vm-tools/services/plugins/vix/vixTools.c
===================================================================
--- open-vm-tools.orig/services/plugins/vix/vixTools.c
+++ open-vm-tools/services/plugins/vix/vixTools.c
@@ -66,7 +66,7 @@
#include <unistd.h>
#endif
-#if defined(sun) || defined(__FreeBSD__) || defined(__APPLE__)
+#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
@@ -0,0 +1,23 @@
From c3ef6a8285132871ad10f9300d8afff55d8d6de2 Mon Sep 17 00:00:00 2001
From: puneetse <22071208+puneetse@users.noreply.github.com>
Date: Wed, 16 Oct 2019 10:09:38 -0700
Subject: [PATCH] Set permissions on rules file
udevs rules should not be executable otherwise udev will log a warning in the journal
Signed-off-by: Pascal de Bruijn <p.debruijn@unilogic.nl>
---
udev/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/udev/Makefile.am b/udev/Makefile.am
index 68fbc3e27..8b9a4d716 100644
--- a/udev/Makefile.am
+++ b/udev/Makefile.am
@@ -17,5 +17,5 @@
install-data-local:
$(INSTALL) -d $(DESTDIR)$(UDEVRULESDIR)
- $(INSTALL) $(srcdir)/99-vmware-scsi-udev.rules $(DESTDIR)$(UDEVRULESDIR)
+ $(INSTALL) -m 0644 $(srcdir)/99-vmware-scsi-udev.rules $(DESTDIR)$(UDEVRULESDIR)
@@ -0,0 +1,25 @@
From 22f5d198b3b2f7e4debed83948ba1baf70d4749a Mon Sep 17 00:00:00 2001
From: puneetse <22071208+puneetse@users.noreply.github.com>
Date: Wed, 16 Oct 2019 10:04:41 -0700
Subject: [PATCH] Change $DEVPATH to $devpath
$DEVPATH throws a warning by udev.
Signed-off-by: Pascal de Bruijn <p.debruijn@unilogic.nl>
---
udev/99-vmware-scsi-udev.rules | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/udev/99-vmware-scsi-udev.rules b/udev/99-vmware-scsi-udev.rules
index 053b59706..a605d80ef 100644
--- a/udev/99-vmware-scsi-udev.rules
+++ b/udev/99-vmware-scsi-udev.rules
@@ -2,6 +2,6 @@
#
# This file is part of open-vm-tools
-ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware*", ATTRS{model}=="Virtual disk*", ENV{DEVTYPE}=="disk", RUN+="/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'"
-ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware*", ATTRS{model}=="VMware Virtual S", ENV{DEVTYPE}=="disk", RUN+="/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'"
+ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware*", ATTRS{model}=="Virtual disk*", ENV{DEVTYPE}=="disk", RUN+="/bin/sh -c 'echo 180 >/sys/$devpath/device/timeout'"
+ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware*", ATTRS{model}=="VMware Virtual S", ENV{DEVTYPE}=="disk", RUN+="/bin/sh -c 'echo 180 >/sys/$devpath/device/timeout'"
@@ -0,0 +1,41 @@
From 0a5032669951ffd6735c294a6f309b0ec6667ea5 Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Sun, 8 Mar 2020 18:49:00 +0100
Subject: [PATCH] open-vm-tools/vmhgfs-fuse/fsutils.h: fix build on musl
loff_t is not defined on musl so define it to avoid the following build
failure:
In file included from module.h:39,
from bdhandler.c:31:
fsutil.h:76:11: error: unknown type name 'loff_t'; did you mean 'off_t'?
loff_t offset);
^~~~~~
off_t
Fixes:
- http://autobuild.buildroot.org/results/4eba7c4585d318efdb9b965d58d879426588aa14
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
[Upstream status: not sent yet (upstream is not reactive on third patch]
---
vmhgfs-fuse/fsutil.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/vmhgfs-fuse/fsutil.h b/vmhgfs-fuse/fsutil.h
index 34b6d489..a94f9fbb 100644
--- a/vmhgfs-fuse/fsutil.h
+++ b/vmhgfs-fuse/fsutil.h
@@ -32,7 +32,8 @@
#include "hgfsProto.h"
#include <fuse.h>
-#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__)
+#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__) || \
+ !(defined(__GLIBC__) || defined(__UCLIBC__))
typedef long long loff_t;
#endif
--
2.25.0
@@ -0,0 +1,80 @@
From 3f0580f2546de8be7acf1bc78a55a257bc638ebe Mon Sep 17 00:00:00 2001
From: Bartosz Brachaczek <b.brachaczek@gmail.com>
Date: Tue, 12 Nov 2019 14:31:08 +0100
Subject: [PATCH] Make HgfsConvertFromNtTimeNsec aware of 64-bit time_t on i386
I verified that this function behaves as expected on x86_64, i386 with
32-bit time_t, and i386 with 64-bit time_t for the following values of
ntTtime:
UNIX_EPOCH-1, UNIX_EPOCH, UNIX_EPOCH+1, UNIX_S32_MAX-1, UNIX_S32_MAX,
UNIX_S32_MAX+1, UNIX_S32_MAX*2+1
I did not verify whether the use of Div643264 is optimal, performance
wise.
Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
---
lib/hgfs/hgfsUtil.c | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/lib/hgfs/hgfsUtil.c b/lib/hgfs/hgfsUtil.c
index cc580ab8..49b10040 100644
--- a/lib/hgfs/hgfsUtil.c
+++ b/lib/hgfs/hgfsUtil.c
@@ -110,23 +110,21 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format
uint64 ntTime) // IN: Time in Windows NT format
{
#ifdef __i386__
- uint32 sec;
- uint32 nsec;
+ uint64 sec64;
+ uint32 sec32, nsec;
+#endif
ASSERT(unixTime);
- /* We assume that time_t is 32bit */
- ASSERT_ON_COMPILE(sizeof (unixTime->tv_sec) == 4);
- /* Cap NT time values that are outside of Unix time's range */
+ if (sizeof (unixTime->tv_sec) == 4) {
+ /* Cap NT time values that are outside of Unix time's range */
- if (ntTime >= UNIX_S32_MAX) {
- unixTime->tv_sec = 0x7FFFFFFF;
- unixTime->tv_nsec = 0;
- return 1;
+ if (ntTime >= UNIX_S32_MAX) {
+ unixTime->tv_sec = 0x7FFFFFFF;
+ unixTime->tv_nsec = 0;
+ return 1;
+ }
}
-#else
- ASSERT(unixTime);
-#endif
if (ntTime < UNIX_EPOCH) {
unixTime->tv_sec = 0;
@@ -135,9 +133,15 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format
}
#ifdef __i386__
- Div643232(ntTime - UNIX_EPOCH, 10000000, &sec, &nsec);
- unixTime->tv_sec = sec;
- unixTime->tv_nsec = nsec * 100;
+ if (sizeof (unixTime->tv_sec) == 4) {
+ Div643232(ntTime - UNIX_EPOCH, 10000000, &sec32, &nsec);
+ unixTime->tv_sec = sec32;
+ unixTime->tv_nsec = nsec * 100;
+ } else {
+ Div643264(ntTime - UNIX_EPOCH, 10000000, &sec64, &nsec);
+ unixTime->tv_sec = sec64;
+ unixTime->tv_nsec = nsec * 100;
+ }
#else
unixTime->tv_sec = (ntTime - UNIX_EPOCH) / 10000000;
unixTime->tv_nsec = ((ntTime - UNIX_EPOCH) % 10000000) * 100;
--
2.25.1
+58
View File
@@ -0,0 +1,58 @@
config BR2_PACKAGE_OPENVMTOOLS
bool "openvmtools"
depends on BR2_i386 || BR2_x86_64
depends on BR2_USE_MMU # libglib2
depends on BR2_USE_WCHAR # libglib2
depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
depends on BR2_ENABLE_LOCALE
depends on !BR2_TOOLCHAIN_USES_UCLIBC
select BR2_PACKAGE_LIBGLIB2
select BR2_PACKAGE_LIBDNET
select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC
help
Open Virtual Machine Tools for VMware guest OS
http://open-vm-tools.sourceforge.net/
ICU locales, Xerces, and X11 tools are currently not
supported.
NOTE: Support for vmblock-fuse will be enabled in
openvmtools if the libfuse package is selected.
if BR2_PACKAGE_OPENVMTOOLS
config BR2_PACKAGE_OPENVMTOOLS_PAM
bool "PAM support"
# linux-pam needs locale and wchar, but we already have this
# dependency on the main symbol, above.
depends on !BR2_STATIC_LIBS
select BR2_PACKAGE_LINUX_PAM
help
Support for PAM in openvmtools
comment "PAM support needs a toolchain w/ dynamic library"
depends on BR2_STATIC_LIBS
config BR2_PACKAGE_OPENVMTOOLS_RESOLUTIONKMS
bool "resolutionkms support"
depends on BR2_PACKAGE_HAS_UDEV
depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm
depends on BR2_i386 || BR2_x86_64 # libdrm vmwgfx
select BR2_PACKAGE_LIBDRM
select BR2_PACKAGE_LIBDRM_VMWGFX
help
Enable support for resolutionkms
comment "resolutionkms needs udev, a toolchain w/ threads"
depends on BR2_i386 || BR2_x86_64
depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS
endif
comment "openvmtools needs a glibc or musl toolchain w/ wchar, threads, locale"
depends on BR2_i386 || BR2_x86_64
depends on BR2_USE_MMU
depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
!BR2_ENABLE_LOCALE || \
BR2_TOOLCHAIN_USES_UCLIBC
+56
View File
@@ -0,0 +1,56 @@
#!/bin/sh
#
# Starts vmtoolsd for openvmtools
#
DAEMON="vmtoolsd"
PIDFILE="/var/run/$DAEMON.pid"
VMTOOLSD_ARGS="-b"
# shellcheck source=/dev/null
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
start() {
printf 'Starting %s: ' "$DAEMON"
# shellcheck disable=SC2086 # we need the word splitting
start-stop-daemon -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" \
-- $VMTOOLSD_ARGS "$PIDFILE"
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
stop() {
printf 'Stopping %s: ' "$DAEMON"
start-stop-daemon -K -q -p "$PIDFILE"
status=$?
if [ "$status" -eq 0 ]; then
rm -f "$PIDFILE"
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
restart() {
stop
sleep 1
start
}
case "$1" in
start|stop|restart)
"$1";;
reload)
# Restart, since there is no true "reload" feature.
restart;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
+3
View File
@@ -0,0 +1,3 @@
# locally computed
sha256 364cd0fdfa5a05e872d08609659e6231ec99788669f7ebba24bfb8c94168daef open-vm-tools-10.3.5-10430147.tar.gz
sha256 f734933bd7d49aef25aaf897ed7281ee822e8635056e69b895a7d2e668937fc5 COPYING
+83
View File
@@ -0,0 +1,83 @@
################################################################################
#
# openvmtools
#
################################################################################
OPENVMTOOLS_VERSION_MAJOR = 10.3.5
OPENVMTOOLS_VERSION = $(OPENVMTOOLS_VERSION_MAJOR)-10430147
OPENVMTOOLS_SITE = https://github.com/vmware/open-vm-tools/releases/download/stable-$(OPENVMTOOLS_VERSION_MAJOR)
OPENVMTOOLS_SOURCE = open-vm-tools-$(OPENVMTOOLS_VERSION).tar.gz
OPENVMTOOLS_LICENSE = LGPL-2.1
OPENVMTOOLS_LICENSE_FILES = COPYING
# configure.ac is patched
OPENVMTOOLS_AUTORECONF = YES
OPENVMTOOLS_CONF_OPTS = --with-dnet \
--without-icu --without-x --without-gtk2 \
--without-gtkmm --without-kernel-modules \
--disable-deploypkg --without-xerces
OPENVMTOOLS_CONF_ENV += \
CUSTOM_DNET_CPPFLAGS=" " \
LIBS=$(TARGET_NLS_LIBS)
OPENVMTOOLS_DEPENDENCIES = \
host-nfs-utils \
libglib2 \
libdnet \
$(TARGET_NLS_DEPENDENCIES)
ifeq ($(BR2_PACKAGE_LIBTIRPC),y)
OPENVMTOOLS_DEPENDENCIES += libtirpc
endif
# When libfuse is available, openvmtools can build vmblock-fuse, so
# make sure that libfuse gets built first
ifeq ($(BR2_PACKAGE_LIBFUSE),y)
OPENVMTOOLS_DEPENDENCIES += libfuse
endif
ifeq ($(BR2_PACKAGE_OPENSSL),y)
OPENVMTOOLS_CONF_OPTS += --with-ssl
OPENVMTOOLS_DEPENDENCIES += openssl
else
OPENVMTOOLS_CONF_OPTS += --without-ssl
endif
ifeq ($(BR2_PACKAGE_OPENVMTOOLS_PAM),y)
OPENVMTOOLS_CONF_OPTS += --with-pam
OPENVMTOOLS_DEPENDENCIES += linux-pam
else
OPENVMTOOLS_CONF_OPTS += --without-pam
endif
ifeq ($(BR2_PACKAGE_OPENVMTOOLS_RESOLUTIONKMS),y)
OPENVMTOOLS_CONF_OPTS += --enable-resolutionkms
OPENVMTOOLS_DEPENDENCIES += libdrm udev
else
OPENVMTOOLS_CONF_OPTS += --disable-resolutionkms
endif
# symlink needed by lib/system/systemLinux.c (or will cry in /var/log/messages)
# defined in lib/misc/hostinfoPosix.c
# /sbin/shutdown needed for Guest OS restart/shutdown from hypervisor
define OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES
ln -fs os-release $(TARGET_DIR)/etc/lfs-release
if [ ! -e $(TARGET_DIR)/sbin/shutdown ]; then \
$(INSTALL) -D -m 755 package/openvmtools/shutdown \
$(TARGET_DIR)/sbin/shutdown; \
fi
endef
OPENVMTOOLS_POST_INSTALL_TARGET_HOOKS += OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES
define OPENVMTOOLS_INSTALL_INIT_SYSV
$(INSTALL) -D -m 755 package/openvmtools/S10vmtoolsd \
$(TARGET_DIR)/etc/init.d/S10vmtoolsd
endef
define OPENVMTOOLS_INSTALL_INIT_SYSTEMD
$(INSTALL) -D -m 644 package/openvmtools/vmtoolsd.service \
$(TARGET_DIR)/usr/lib/systemd/system/vmtoolsd.service
endef
$(eval $(autotools-package))
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
#compatibility script for openvmtools
if [ "$1" == "-r" ]; then
/sbin/reboot
else
/sbin/poweroff
fi
+15
View File
@@ -0,0 +1,15 @@
[Unit]
Description=vmtoolsd for openvmtools
After=syslog.target network.target
ConditionVirtualization=vmware
[Service]
Type=forking
PIDFile=/run/vmtoolsd.pid
ExecStart=/usr/bin/vmtoolsd -b /run/vmtoolsd.pid
Restart=on-failure
KillMode=process
KillSignal=SIGKILL
[Install]
WantedBy=multi-user.target