123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- /*
- * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #pragma once
- #include <AK/DistinctNumeric.h>
- #include <AK/Types.h>
- #include <Kernel/API/POSIX/fcntl.h>
- #include <Kernel/API/POSIX/futex.h>
- #include <Kernel/API/POSIX/netinet/in.h>
- #include <Kernel/API/POSIX/signal.h>
- #include <Kernel/API/POSIX/sys/mman.h>
- #include <Kernel/API/POSIX/sys/socket.h>
- #include <Kernel/API/POSIX/sys/stat.h>
- #include <Kernel/API/POSIX/sys/un.h>
- #include <Kernel/API/POSIX/termios.h>
- #include <Kernel/API/POSIX/time.h>
- // Kernel internal options.
- #define O_NOFOLLOW_NOERROR (1 << 29)
- #define O_UNLINK_INTERNAL (1 << 30)
- #define MS_NODEV (1 << 0)
- #define MS_NOEXEC (1 << 1)
- #define MS_NOSUID (1 << 2)
- #define MS_BIND (1 << 3)
- #define MS_RDONLY (1 << 4)
- #define MS_REMOUNT (1 << 5)
- enum {
- _SC_MONOTONIC_CLOCK,
- _SC_NPROCESSORS_CONF,
- _SC_NPROCESSORS_ONLN,
- _SC_OPEN_MAX,
- _SC_TTY_NAME_MAX,
- _SC_PAGESIZE,
- _SC_GETPW_R_SIZE_MAX,
- _SC_CLK_TCK,
- };
- enum {
- PERF_EVENT_SAMPLE = 1,
- PERF_EVENT_MALLOC = 2,
- PERF_EVENT_FREE = 4,
- PERF_EVENT_MMAP = 8,
- PERF_EVENT_MUNMAP = 16,
- PERF_EVENT_PROCESS_CREATE = 32,
- PERF_EVENT_PROCESS_EXEC = 64,
- PERF_EVENT_PROCESS_EXIT = 128,
- PERF_EVENT_THREAD_CREATE = 256,
- PERF_EVENT_THREAD_EXIT = 512,
- PERF_EVENT_CONTEXT_SWITCH = 1024,
- PERF_EVENT_KMALLOC = 2048,
- PERF_EVENT_KFREE = 4096,
- PERF_EVENT_PAGE_FAULT = 8192,
- PERF_EVENT_SYSCALL = 16384,
- PERF_EVENT_SIGNPOST = 32768,
- };
- #define WNOHANG 1
- #define WUNTRACED 2
- #define WSTOPPED WUNTRACED
- #define WEXITED 4
- #define WCONTINUED 8
- #define WNOWAIT 0x1000000
- #define R_OK 4
- #define W_OK 2
- #define X_OK 1
- #define F_OK 0
- #define SEEK_SET 0
- #define SEEK_CUR 1
- #define SEEK_END 2
- #define MADV_SET_VOLATILE 0x100
- #define MADV_SET_NONVOLATILE 0x200
- #define F_DUPFD 0
- #define F_GETFD 1
- #define F_SETFD 2
- #define F_GETFL 3
- #define F_SETFL 4
- #define F_ISTTY 5
- #define F_GETLK 6
- #define F_SETLK 7
- #define F_SETLKW 8
- #define FD_CLOEXEC 1
- // Avoid interference with AK/Types.h and LibC/sys/types.h by defining *separate* names:
- TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ProcessID);
- TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ThreadID);
- TYPEDEF_DISTINCT_ORDERED_ID(pid_t, SessionID);
- TYPEDEF_DISTINCT_ORDERED_ID(pid_t, ProcessGroupID);
- struct tms {
- clock_t tms_utime;
- clock_t tms_stime;
- clock_t tms_cutime;
- clock_t tms_cstime;
- };
- typedef i64 off_t;
- typedef i64 time_t;
- typedef u32 blksize_t;
- typedef u32 blkcnt_t;
- #define POLLIN (1u << 0)
- #define POLLPRI (1u << 1)
- #define POLLOUT (1u << 2)
- #define POLLERR (1u << 3)
- #define POLLHUP (1u << 4)
- #define POLLNVAL (1u << 5)
- #define POLLRDHUP (1u << 13)
- struct pollfd {
- int fd;
- short events;
- short revents;
- };
- typedef u32 __u32;
- typedef u16 __u16;
- typedef u8 __u8;
- typedef int __s32;
- typedef short __s16;
- typedef u32 useconds_t;
- typedef i32 suseconds_t;
- struct timeval {
- time_t tv_sec;
- suseconds_t tv_usec;
- };
- typedef enum {
- P_ALL = 1,
- P_PID,
- P_PGID
- } idtype_t;
- #define UTSNAME_ENTRY_LEN 65
- struct utsname {
- char sysname[UTSNAME_ENTRY_LEN];
- char nodename[UTSNAME_ENTRY_LEN];
- char release[UTSNAME_ENTRY_LEN];
- char version[UTSNAME_ENTRY_LEN];
- char machine[UTSNAME_ENTRY_LEN];
- };
- struct iovec {
- void* iov_base;
- size_t iov_len;
- };
- struct sched_param {
- int sched_priority;
- };
- struct ifreq {
- #define IFNAMSIZ 16
- char ifr_name[IFNAMSIZ];
- union {
- struct sockaddr ifru_addr;
- struct sockaddr ifru_dstaddr;
- struct sockaddr ifru_broadaddr;
- struct sockaddr ifru_netmask;
- struct sockaddr ifru_hwaddr;
- short ifru_flags;
- int ifru_metric;
- int64_t ifru_vnetid;
- uint64_t ifru_media;
- void* ifru_data;
- unsigned int ifru_index;
- } ifr_ifru;
- #define ifr_addr ifr_ifru.ifru_addr // address
- #define ifr_dstaddr ifr_ifru.ifru_dstaddr // other end of p-to-p link
- #define ifr_broadaddr ifr_ifru.ifru_broadaddr // broadcast address
- #define ifr_netmask ifr_ifru.ifru_netmask // network mask
- #define ifr_flags ifr_ifru.ifru_flags // flags
- #define ifr_metric ifr_ifru.ifru_metric // metric
- #define ifr_mtu ifr_ifru.ifru_metric // mtu (overload)
- #define ifr_hardmtu ifr_ifru.ifru_metric // hardmtu (overload)
- #define ifr_media ifr_ifru.ifru_media // media options
- #define ifr_rdomainid ifr_ifru.ifru_metric // VRF instance (overload)
- #define ifr_vnetid ifr_ifru.ifru_vnetid // Virtual Net Id
- #define ifr_ttl ifr_ifru.ifru_metric // tunnel TTL (overload)
- #define ifr_data ifr_ifru.ifru_data // for use by interface
- #define ifr_index ifr_ifru.ifru_index // interface index
- #define ifr_llprio ifr_ifru.ifru_metric // link layer priority
- #define ifr_hwaddr ifr_ifru.ifru_hwaddr // MAC address
- };
- struct rtentry {
- struct sockaddr rt_gateway; /* the gateway address */
- struct sockaddr rt_genmask; /* the target network mask */
- unsigned short int rt_flags;
- char* rt_dev;
- /* FIXME: complete the struct */
- };
- #define RTF_UP 0x1 /* do not delete the route */
- #define RTF_GATEWAY 0x2 /* the route is a gateway and not an end host */
- #define AT_FDCWD -100
- #define AT_SYMLINK_NOFOLLOW 0x100
- struct arpreq {
- struct sockaddr arp_pa; /* protocol address */
- struct sockaddr arp_ha; /* hardware address */
- struct sockaddr arp_netmask; /* netmask of protocol address */
- int arp_flags; /* flags */
- char arp_dev[16];
- };
- #define PURGE_ALL_VOLATILE 0x1
- #define PURGE_ALL_CLEAN_INODE 0x2
- #define PT_TRACE_ME 1
- #define PT_ATTACH 2
- #define PT_CONTINUE 3
- #define PT_SYSCALL 4
- #define PT_GETREGS 5
- #define PT_DETACH 6
- #define PT_PEEK 7
- #define PT_POKE 8
- #define PT_SETREGS 9
- #define PT_POKEDEBUG 10
- #define PT_PEEKDEBUG 11
- // Used in struct dirent
- enum {
- DT_UNKNOWN = 0,
- #define DT_UNKNOWN DT_UNKNOWN
- DT_FIFO = 1,
- #define DT_FIFO DT_FIFO
- DT_CHR = 2,
- #define DT_CHR DT_CHR
- DT_DIR = 4,
- #define DT_DIR DT_DIR
- DT_BLK = 6,
- #define DT_BLK DT_BLK
- DT_REG = 8,
- #define DT_REG DT_REG
- DT_LNK = 10,
- #define DT_LNK DT_LNK
- DT_SOCK = 12,
- #define DT_SOCK DT_SOCK
- DT_WHT = 14
- #define DT_WHT DT_WHT
- };
- typedef uint64_t fsblkcnt_t;
- typedef uint64_t fsfilcnt_t;
- #define ST_RDONLY 0x1
- #define ST_NOSUID 0x2
- struct statvfs {
- unsigned long f_bsize;
- unsigned long f_frsize;
- fsblkcnt_t f_blocks;
- fsblkcnt_t f_bfree;
- fsblkcnt_t f_bavail;
- fsfilcnt_t f_files;
- fsfilcnt_t f_ffree;
- fsfilcnt_t f_favail;
- unsigned long f_fsid;
- unsigned long f_flag;
- unsigned long f_namemax;
- };
|