X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Fmissing.h;h=5b95b0006f5e4a0be4d90dd2b8276e6380ddb626;hp=8c6698cff1f22fcf6d451b3a2daf9cb833c024d2;hb=c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1;hpb=568981d2ac78567e859d89e8d29f844c3e6a871f diff --git a/src/shared/missing.h b/src/shared/missing.h index 8c6698cff..5b95b0006 100644 --- a/src/shared/missing.h +++ b/src/shared/missing.h @@ -34,17 +34,22 @@ #include #include #include +#include #ifdef HAVE_AUDIT #include #endif -#include "macro.h" - #ifdef ARCH_MIPS #include #endif +#ifdef HAVE_LINUX_BTRFS_H +#include +#endif + +#include "macro.h" + #ifndef RLIMIT_RTTIME #define RLIMIT_RTTIME 15 #endif @@ -74,6 +79,12 @@ #define F_SEAL_WRITE 0x0008 /* prevent writes */ #endif +#ifndef F_OFD_GETLK +#define F_OFD_GETLK 36 +#define F_OFD_SETLK 37 +#define F_OFD_SETLKW 38 +#endif + #ifndef MFD_ALLOW_SEALING #define MFD_ALLOW_SEALING 0x0002U #endif @@ -135,8 +146,11 @@ static inline int pivot_root(const char *new_root, const char *put_old) { # if _MIPS_SIM == _MIPS_SIM_ABI64 # define __NR_memfd_create 5314 # endif -# else +# elif defined __i386__ # define __NR_memfd_create 356 +# else +# warning "__NR_memfd_create unknown for your architecture" +# define __NR_memfd_create 0xffffffff # endif #endif @@ -242,6 +256,34 @@ struct btrfs_ioctl_fs_info_args { struct btrfs_ioctl_vol_args) #endif +#ifndef BTRFS_FIRST_FREE_OBJECTID +#define BTRFS_FIRST_FREE_OBJECTID 256 +#endif + +#ifndef BTRFS_ROOT_TREE_OBJECTID +#define BTRFS_ROOT_TREE_OBJECTID 1 +#endif + +#ifndef BTRFS_QUOTA_TREE_OBJECTID +#define BTRFS_QUOTA_TREE_OBJECTID 8ULL +#endif + +#ifndef BTRFS_ROOT_ITEM_KEY +#define BTRFS_ROOT_ITEM_KEY 132 +#endif + +#ifndef BTRFS_QGROUP_STATUS_KEY +#define BTRFS_QGROUP_STATUS_KEY 240 +#endif + +#ifndef BTRFS_QGROUP_INFO_KEY +#define BTRFS_QGROUP_INFO_KEY 242 +#endif + +#ifndef BTRFS_QGROUP_LIMIT_KEY +#define BTRFS_QGROUP_LIMIT_KEY 244 +#endif + #ifndef BTRFS_SUPER_MAGIC #define BTRFS_SUPER_MAGIC 0x9123683E #endif @@ -399,6 +441,18 @@ static inline int setns(int fd, int nstype) { #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1) #endif +#if !HAVE_DECL_IFLA_IPVLAN_MODE +#define IFLA_IPVLAN_UNSPEC 0 +#define IFLA_IPVLAN_MODE 1 +#define __IFLA_IPVLAN_MAX 2 + +#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1) + +#define IPVLAN_MODE_L2 0 +#define IPVLAN_MODE_L3 1 +#define IPVLAN_MAX 2 +#endif + #if !HAVE_DECL_IFLA_VTI_REMOTE #define IFLA_VTI_UNSPEC 0 #define IFLA_VTI_LINK 1 @@ -519,6 +573,22 @@ static inline int setns(int fd, int nstype) { #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1) #endif +#if !HAVE_DECL_IFLA_BRPORT_UNICAST_FLOOD +#define IFLA_BRPORT_UNSPEC 0 +#define IFLA_BRPORT_STATE 1 +#define IFLA_BRPORT_PRIORITY 2 +#define IFLA_BRPORT_COST 3 +#define IFLA_BRPORT_MODE 4 +#define IFLA_BRPORT_GUARD 5 +#define IFLA_BRPORT_PROTECT 6 +#define IFLA_BRPORT_FAST_LEAVE 7 +#define IFLA_BRPORT_LEARNING 8 +#define IFLA_BRPORT_UNICAST_FLOOD 9 +#define __IFLA_BRPORT_MAX 10 + +#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) +#endif + #ifndef IPV6_UNICAST_IF #define IPV6_UNICAST_IF 76 #endif @@ -547,6 +617,10 @@ static inline int setns(int fd, int nstype) { # define NET_ADDR_RANDOM 1 #endif +#ifndef NET_NAME_UNKNOWN +# define NET_NAME_UNKNOWN 0 +#endif + #ifndef NET_NAME_ENUM # define NET_NAME_ENUM 1 #endif @@ -583,3 +657,85 @@ static inline int setns(int fd, int nstype) { #ifndef AUDIT_NLGRP_MAX #define AUDIT_NLGRP_READLOG 1 #endif + +#ifndef CAP_MAC_OVERRIDE +#define CAP_MAC_OVERRIDE 32 +#endif + +#ifndef CAP_MAC_ADMIN +#define CAP_MAC_ADMIN 33 +#endif + +#ifndef CAP_SYSLOG +#define CAP_SYSLOG 34 +#endif + +#ifndef CAP_WAKE_ALARM +#define CAP_WAKE_ALARM 35 +#endif + +#ifndef CAP_BLOCK_SUSPEND +#define CAP_BLOCK_SUSPEND 36 +#endif + +#ifndef CAP_AUDIT_READ +#define CAP_AUDIT_READ 37 +#endif + +static inline int raw_clone(unsigned long flags, void *child_stack) { +#if defined(__s390__) || defined(__CRIS__) + /* On s390 and cris the order of the first and second arguments + * of the raw clone() system call is reversed. */ + return (int) syscall(__NR_clone, child_stack, flags); +#else + return (int) syscall(__NR_clone, flags, child_stack); +#endif +} + +static inline pid_t raw_getpid(void) { + return (pid_t) syscall(__NR_getpid); +} + +#if !HAVE_DECL_RENAMEAT2 + +#ifndef __NR_renameat2 +# if defined __x86_64__ +# define __NR_renameat2 316 +# elif defined __arm__ +# define __NR_renameat2 382 +# elif defined _MIPS_SIM +# if _MIPS_SIM == _MIPS_SIM_ABI32 +# define __NR_renameat2 4351 +# endif +# if _MIPS_SIM == _MIPS_SIM_NABI32 +# define __NR_renameat2 6315 +# endif +# if _MIPS_SIM == _MIPS_SIM_ABI64 +# define __NR_renameat2 5311 +# endif +# elif defined __i386__ +# define __NR_renameat2 353 +# else +# warning "__NR_renameat2 unknown for your architecture" +# define __NR_renameat2 0xffffffff +# endif +#endif + +static inline int renameat2(int oldfd, const char *oldname, int newfd, const char *newname, unsigned flags) { + return syscall(__NR_renameat2, oldfd, oldname, newfd, newname, flags); +} +#endif + +#ifndef RENAME_NOREPLACE +#define RENAME_NOREPLACE (1 << 0) +#endif + +#if !HAVE_DECL_KCMP +static inline int kcmp(pid_t pid1, pid_t pid2, int type, unsigned long idx1, unsigned long idx2) { + return syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2); +} +#endif + +#ifndef KCMP_FILE +#define KCMP_FILE 0 +#endif