X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fmissing.h;h=96e6d63101cb0161622b604d3fc53c466e17163d;hb=b32ff512191bf873266ee8067f6f6c8a30c96a5e;hp=df3fd0e839d59ef47882041e638bce112f7809f1;hpb=d4447f4d955d5bfbdec6feec8e332b8c126f474a;p=elogind.git diff --git a/src/shared/missing.h b/src/shared/missing.h index df3fd0e83..96e6d6310 100644 --- a/src/shared/missing.h +++ b/src/shared/missing.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -83,9 +84,11 @@ #define IP_TRANSPARENT 19 #endif +#if !HAVE_DECL_PIVOT_ROOT static inline int pivot_root(const char *new_root, const char *put_old) { return syscall(SYS_pivot_root, new_root, put_old); } +#endif #ifdef __x86_64__ # ifndef __NR_fanotify_init @@ -126,13 +129,17 @@ static inline int pivot_root(const char *new_root, const char *put_old) { # endif #endif +#ifndef HAVE_FANOTIFY_INIT static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags) { return syscall(__NR_fanotify_init, flags, event_f_flags); } +#endif +#ifndef HAVE_FANOTIFY_MARK static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask, int dfd, const char *pathname) { -#if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__ +#if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__ \ + || defined __arm__ && !defined __aarch64__ union { uint64_t _64; uint32_t _32[2]; @@ -145,6 +152,7 @@ static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t ma return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname); #endif } +#endif #ifndef BTRFS_IOCTL_MAGIC #define BTRFS_IOCTL_MAGIC 0x94 @@ -175,9 +183,11 @@ struct btrfs_ioctl_vol_args { #define MS_PRIVATE (1 << 18) #endif +#if !HAVE_DECL_GETTID static inline pid_t gettid(void) { return (pid_t) syscall(SYS_gettid); } +#endif #ifndef SCM_SECURITY #define SCM_SECURITY 0x03 @@ -187,6 +197,14 @@ static inline pid_t gettid(void) { #define MS_STRICTATIME (1<<24) #endif +#ifndef MS_REC +#define MS_REC 16384 +#endif + +#ifndef MS_SHARED +#define MS_SHARED (1<<20) +#endif + #ifndef PR_SET_NO_NEW_PRIVS #define PR_SET_NO_NEW_PRIVS 38 #endif @@ -194,3 +212,57 @@ static inline pid_t gettid(void) { #ifndef PR_SET_CHILD_SUBREAPER #define PR_SET_CHILD_SUBREAPER 36 #endif + +#ifndef MAX_HANDLE_SZ +#define MAX_HANDLE_SZ 128 +#endif + +#if defined __x86_64__ +# ifndef __NR_name_to_handle_at +# define __NR_name_to_handle_at 303 +# endif +#elif defined __i386__ +# ifndef __NR_name_to_handle_at +# define __NR_name_to_handle_at 341 +# endif +#elif defined __arm__ +# ifndef __NR_name_to_handle_at +# define __NR_name_to_handle_at 370 +# endif +#elif defined __powerpc__ +# ifndef __NR_name_to_handle_at +# define __NR_name_to_handle_at 345 +# endif +#else +# ifndef __NR_name_to_handle_at +# error __NR_name_to_handle_at is not defined +# endif +#endif + +#if !HAVE_DECL_NAME_TO_HANDLE_AT +struct file_handle { + unsigned int handle_bytes; + int handle_type; + unsigned char f_handle[0]; +}; + +static inline int name_to_handle_at(int fd, const char *name, struct file_handle *handle, int *mnt_id, int flags) { + return syscall(__NR_name_to_handle_at, fd, name, handle, mnt_id, flags); +} +#endif + +#ifndef HAVE_SECURE_GETENV +# ifdef HAVE___SECURE_GETENV +# define secure_getenv __secure_getenv +# else +# error neither secure_getenv nor __secure_getenv are available +# endif +#endif + +#ifndef CIFS_MAGIC_NUMBER +#define CIFS_MAGIC_NUMBER 0xFF534D42 +#endif + +#ifndef TFD_TIMER_CANCEL_ON_SET +#define TFD_TIMER_CANCEL_ON_SET (1 << 1) +#endif