X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fmissing.h;h=7725e4729803e9ed8c7c26561652f4bc918755a7;hb=97768fc5746ea97cb2d3ac6854b4fc7ce1c14f24;hp=a88d9e414b171898f195134efdf5c48d9f08fbe2;hpb=c7e4a7bece7a5c4484d229dd5e8ff01a5d49c62e;p=elogind.git diff --git a/src/shared/missing.h b/src/shared/missing.h index a88d9e414..7725e4729 100644 --- a/src/shared/missing.h +++ b/src/shared/missing.h @@ -115,21 +115,15 @@ static inline int pivot_root(const char *new_root, const char *put_old) { } #endif -#ifdef __x86_64__ -# ifndef __NR_memfd_create +#ifndef __NR_memfd_create +# if defined __x86_64__ # define __NR_memfd_create 319 -# endif -#elif defined __arm__ -# ifndef __NR_memfd_create +# elif defined __arm__ # define __NR_memfd_create 385 -# endif -#elif defined _MIPS_SIM -# ifndef __NR_memfd_create +# elif defined _MIPS_SIM # warning "__NR_memfd_create not yet defined for MIPS" # define __NR_memfd_create 0xffffffff -# endif -#else -# ifndef __NR_memfd_create +# else # define __NR_memfd_create 356 # endif #endif @@ -140,6 +134,29 @@ static inline int memfd_create(const char *name, unsigned int flags) { } #endif +#ifndef __NR_getrandom +# if defined __x86_64__ +# define __NR_getrandom 318 +# else +# warning "__NR_getrandom unknown for your architecture" +# define __NR_getrandom 0xffffffff +# endif +#endif + +#if !HAVE_DECL_GETRANDOM +static inline int getrandom(void *buffer, size_t count, unsigned flags) { + return syscall(__NR_getrandom, buffer, count, flags); +} +#endif + +#ifndef GRND_NONBLOCK +#define GRND_NONBLOCK 0x0001 +#endif + +#ifndef GRND_RANDOM +#define GRND_RANDOM 0x0002 +#endif + #ifndef BTRFS_IOCTL_MAGIC #define BTRFS_IOCTL_MAGIC 0x94 #endif @@ -411,7 +428,7 @@ static inline int setns(int fd, int nstype) { #define IFLA_BOND_AD_INFO 23 #define __IFLA_BOND_MAX 24 -#define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1) +#define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1) #endif #if !HAVE_DECL_IFLA_VLAN_PROTOCOL @@ -527,3 +544,12 @@ static inline int setns(int fd, int nstype) { #ifndef BPF_XOR # define BPF_XOR 0xa0 #endif + +/* Note that LOOPBACK_IFINDEX is currently not exported by the + * kernel/glibc, but hardcoded internally by the kernel. However, as + * it is exported to userspace indirectly via rtnetlink and the + * ioctls, and made use of widely we define it here too, in a way that + * is compatible with the kernel's internal definition. */ +#ifndef LOOPBACK_IFINDEX +#define LOOPBACK_IFINDEX 1 +#endif