PageRenderTime 27ms CodeModel.GetById 61ms RepoModel.GetById 1ms app.codeStats 0ms

/headers/posix/unistd.h

https://github.com/xifedI/haiku
C Header | 293 lines | 222 code | 43 blank | 28 comment | 0 complexity | 4306ba9e1728a503d7fa5ee27e80999f MD5 | raw file
  1. /*
  2. * Copyright 2004-2015 Haiku, Inc. All Rights Reserved.
  3. * Distributed under the terms of the MIT License.
  4. */
  5. #ifndef _UNISTD_H_
  6. #define _UNISTD_H_
  7. #include <null.h>
  8. #include <stdint.h>
  9. #include <sys/types.h>
  10. /* access modes */
  11. #define R_OK 4
  12. #define W_OK 2
  13. #define X_OK 1
  14. #define F_OK 0
  15. /* standard file descriptors */
  16. #define STDIN_FILENO 0
  17. #define STDOUT_FILENO 1
  18. #define STDERR_FILENO 2
  19. /* function arguments needed by lockf() */
  20. #define F_ULOCK 0 /* unlock locked sections */
  21. #define F_LOCK 1 /* lock a section for exclusive use */
  22. #define F_TLOCK 2 /* test and lock a section for exclusive use */
  23. #define F_TEST 3 /* test a section for locks by other processes */
  24. /* POSIX version support */
  25. #define _POSIX_VERSION (199009L) /* TODO: Update! */
  26. #define _POSIX_CHOWN_RESTRICTED 1
  27. #define _POSIX_JOB_CONTROL 1
  28. #define _POSIX_NO_TRUNC 0
  29. #define _POSIX_SAVED_IDS 1
  30. #define _POSIX_VDISABLE ((unsigned char)-2)
  31. /* TODO: Check this! */
  32. /* TODO: Update these to the current POSIX version! Ideally after actually
  33. supporting the features. */
  34. #define _POSIX_SEMAPHORES (200112L)
  35. #define _POSIX_THREADS (200112L)
  36. #define _POSIX_MAPPED_FILES (200809L)
  37. #define _POSIX_THREAD_PROCESS_SHARED (200809L)
  38. #define _POSIX_THREAD_ATTR_STACKADDR (-1) /* currently unsupported */
  39. #define _POSIX_THREAD_ATTR_STACKSIZE (200809L)
  40. #define _POSIX_THREAD_PRIORITY_SCHEDULING (-1) /* currently unsupported */
  41. #define _POSIX_REALTIME_SIGNALS (200809L)
  42. #define _POSIX_MEMORY_PROTECTION (200809L)
  43. #define _POSIX_MONOTONIC_CLOCK (200809L)
  44. #define _POSIX_TIMERS (200809L)
  45. #define _POSIX_CPUTIME (200809L)
  46. #define _POSIX_THREAD_CPUTIME (200809L)
  47. /* pathconf() constants */
  48. /* BeOS supported values, do not touch */
  49. #define _PC_CHOWN_RESTRICTED 1
  50. #define _PC_MAX_CANON 2
  51. #define _PC_MAX_INPUT 3
  52. #define _PC_NAME_MAX 4
  53. #define _PC_NO_TRUNC 5
  54. #define _PC_PATH_MAX 6
  55. #define _PC_PIPE_BUF 7
  56. #define _PC_VDISABLE 8
  57. #define _PC_LINK_MAX 25
  58. /* new values */
  59. #define _PC_SYNC_IO 26
  60. #define _PC_ASYNC_IO 27
  61. #define _PC_PRIO_IO 28
  62. #define _PC_SOCK_MAXBUF 29
  63. #define _PC_FILESIZEBITS 30
  64. #define _PC_REC_INCR_XFER_SIZE 31
  65. #define _PC_REC_MAX_XFER_SIZE 32
  66. #define _PC_REC_MIN_XFER_SIZE 33
  67. #define _PC_REC_XFER_ALIGN 34
  68. #define _PC_ALLOC_SIZE_MIN 35
  69. #define _PC_SYMLINK_MAX 36
  70. #define _PC_2_SYMLINKS 37
  71. #define _PC_XATTR_EXISTS 38
  72. #define _PC_XATTR_ENABLED 39
  73. /* sysconf() constants */
  74. /* BeOS supported values, do not touch */
  75. #define _SC_ARG_MAX 15
  76. #define _SC_CHILD_MAX 16
  77. #define _SC_CLK_TCK 17
  78. #define _SC_JOB_CONTROL 18
  79. #define _SC_NGROUPS_MAX 19
  80. #define _SC_OPEN_MAX 20
  81. #define _SC_SAVED_IDS 21
  82. #define _SC_STREAM_MAX 22
  83. #define _SC_TZNAME_MAX 23
  84. #define _SC_VERSION 24
  85. /* new values */
  86. #define _SC_GETGR_R_SIZE_MAX 25
  87. #define _SC_GETPW_R_SIZE_MAX 26
  88. #define _SC_PAGE_SIZE 27
  89. #define _SC_PAGESIZE _SC_PAGE_SIZE
  90. #define _SC_SEM_NSEMS_MAX 28
  91. #define _SC_SEM_VALUE_MAX 29
  92. #define _SC_SEMAPHORES 30
  93. #define _SC_THREADS 31
  94. /* TODO: check */
  95. #define _SC_IOV_MAX 32
  96. #define _SC_UIO_MAXIOV _SC_IOV_MAX
  97. #define _SC_NPROCESSORS_CONF 34
  98. #define _SC_NPROCESSORS_ONLN 35
  99. #define _SC_ATEXIT_MAX 37
  100. #define _SC_PASS_MAX 39
  101. #define _SC_PHYS_PAGES 40
  102. #define _SC_AVPHYS_PAGES 41
  103. #define _SC_PIPE 42
  104. #define _SC_SELECT 43
  105. #define _SC_POLL 44
  106. #define _SC_MAPPED_FILES 45
  107. #define _SC_THREAD_PROCESS_SHARED 46
  108. #define _SC_THREAD_STACK_MIN 47
  109. #define _SC_THREAD_ATTR_STACKADDR 48
  110. #define _SC_THREAD_ATTR_STACKSIZE 49
  111. #define _SC_THREAD_PRIORITY_SCHEDULING 50
  112. #define _SC_REALTIME_SIGNALS 51
  113. #define _SC_MEMORY_PROTECTION 52
  114. #define _SC_SIGQUEUE_MAX 53
  115. #define _SC_RTSIG_MAX 54
  116. #define _SC_MONOTONIC_CLOCK 55
  117. #define _SC_DELAYTIMER_MAX 56
  118. #define _SC_TIMER_MAX 57
  119. #define _SC_TIMERS 58
  120. #define _SC_CPUTIME 59
  121. #define _SC_THREAD_CPUTIME 60
  122. /* confstr() constants */
  123. #define _CS_PATH 1
  124. /* lseek() constants */
  125. #ifndef SEEK_SET
  126. # define SEEK_SET 0
  127. #endif
  128. #ifndef SEEK_CUR
  129. # define SEEK_CUR 1
  130. #endif
  131. #ifndef SEEK_END
  132. # define SEEK_END 2
  133. #endif
  134. #ifdef __cplusplus
  135. extern "C" {
  136. #endif
  137. /* file functions */
  138. extern int access(const char *path, int accessMode);
  139. extern int faccessat(int fd, const char *path, int accessMode, int flag);
  140. extern int chdir(const char *path);
  141. extern int fchdir(int fd);
  142. extern char *getcwd(char *buffer, size_t size);
  143. extern int pipe(int fildes[2]);
  144. extern int dup(int fd);
  145. extern int dup2(int fd1, int fd2);
  146. extern int close(int fd);
  147. extern int link(const char *toPath, const char *path);
  148. extern int linkat(int toFD, const char *toPath, int pathFD,
  149. const char *path, int flag);
  150. extern int unlink(const char *name);
  151. extern int unlinkat(int fd, const char *path, int flag);
  152. extern int rmdir(const char *path);
  153. extern ssize_t readlink(const char *path, char *buffer, size_t bufferSize);
  154. extern ssize_t readlinkat(int fd, const char *path, char *buffer,
  155. size_t bufferSize);
  156. extern int symlink(const char *toPath, const char *symlinkPath);
  157. extern int symlinkat(const char *toPath, int fd, const char *symlinkPath);
  158. extern int ftruncate(int fd, off_t newSize);
  159. extern int truncate(const char *path, off_t newSize);
  160. extern int ioctl(int fd, unsigned long op, ...);
  161. extern ssize_t read(int fd, void *buffer, size_t count);
  162. extern ssize_t read_pos(int fd, off_t pos, void *buffer, size_t count);
  163. extern ssize_t pread(int fd, void *buffer, size_t count, off_t pos);
  164. extern ssize_t write(int fd, const void *buffer, size_t count);
  165. extern ssize_t write_pos(int fd, off_t pos, const void *buffer,size_t count);
  166. extern ssize_t pwrite(int fd, const void *buffer, size_t count, off_t pos);
  167. extern off_t lseek(int fd, off_t offset, int whence);
  168. extern void sync(void);
  169. extern int fsync(int fd);
  170. extern int chown(const char *path, uid_t owner, gid_t group);
  171. extern int fchown(int fd, uid_t owner, gid_t group);
  172. extern int lchown(const char *path, uid_t owner, gid_t group);
  173. extern int fchownat(int fd, const char *path, uid_t owner, gid_t group,
  174. int flag);
  175. extern int getpagesize(void);
  176. extern int getdtablesize(void);
  177. extern long sysconf(int name);
  178. extern long fpathconf(int fd, int name);
  179. extern long pathconf(const char *path, int name);
  180. extern size_t confstr(int name, char *buf, size_t len);
  181. extern int lockf(int fd, int function, off_t size);
  182. /* process functions */
  183. extern pid_t fork(void);
  184. extern pid_t vfork(void);
  185. extern int execve(const char *path, char * const argv[],
  186. char *const environment[]);
  187. extern int execl(const char *path, const char *arg, ...);
  188. extern int execv(const char *path, char *const argv[]);
  189. extern int execlp(const char *file, const char *arg, ...);
  190. extern int execle(const char *path, const char *arg , ... /*, char **envp */);
  191. extern int execvp(const char *file, char *const argv[]);
  192. extern int execvpe(const char *file, char *const argv[],
  193. char *const environment[]);
  194. extern void _exit(int status) __attribute__ ((noreturn));
  195. extern pid_t tcgetpgrp(int fd);
  196. extern int tcsetpgrp(int fd, pid_t pgrpid);
  197. extern int brk(void *addr);
  198. extern void *sbrk(intptr_t increment);
  199. extern unsigned int alarm(unsigned int seconds);
  200. extern useconds_t ualarm(useconds_t microSeconds, useconds_t interval);
  201. extern unsigned int sleep(unsigned int seconds);
  202. extern int usleep(unsigned int microSeconds);
  203. extern int pause(void);
  204. /* process */
  205. extern pid_t getpid(void);
  206. extern pid_t getpgrp(void);
  207. extern pid_t getppid(void);
  208. extern pid_t getsid(pid_t pid);
  209. extern pid_t getpgid(pid_t pid);
  210. extern pid_t setsid(void);
  211. extern int setpgid(pid_t pid, pid_t pgid);
  212. extern pid_t setpgrp(void);
  213. extern int chroot(const char *path);
  214. /* access permissions */
  215. extern gid_t getegid(void);
  216. extern uid_t geteuid(void);
  217. extern gid_t getgid(void);
  218. extern uid_t getuid(void);
  219. extern int setgid(gid_t gid);
  220. extern int setuid(uid_t uid);
  221. extern int setegid(gid_t gid);
  222. extern int seteuid(uid_t uid);
  223. extern int setregid(gid_t rgid, gid_t egid);
  224. extern int setreuid(uid_t ruid, uid_t euid);
  225. extern int getgrouplist(const char* user, gid_t baseGroup,
  226. gid_t* groupList, int* groupCount);
  227. extern int getgroups(int groupCount, gid_t groupList[]);
  228. extern int initgroups(const char* user, gid_t baseGroup);
  229. extern int setgroups(int groupCount, const gid_t* groupList);
  230. extern char *getlogin(void);
  231. extern int getlogin_r(char *name, size_t nameSize);
  232. /* host name */
  233. extern int sethostname(const char *hostName, size_t nameSize);
  234. extern int gethostname(char *hostName, size_t nameSize);
  235. /* tty */
  236. extern int isatty(int fd);
  237. extern char *ttyname(int fd);
  238. extern int ttyname_r(int fd, char *buffer, size_t bufferSize);
  239. /* misc */
  240. extern char *crypt(const char *key, const char *salt);
  241. extern void encrypt(char block[64], int edflag);
  242. extern int getopt(int argc, char *const *argv, const char *shortOpts);
  243. extern void swab(const void *src, void *dest, ssize_t nbytes);
  244. /* getopt() related external variables */
  245. extern char *optarg;
  246. extern int optind, opterr, optopt;
  247. #ifdef __cplusplus
  248. }
  249. #endif
  250. #endif /* _UNISTD_H_ */