22 #ifndef P99_POSIX_DEFAULT_H_
23 # define P99_POSIX_DEFAULT_H_
26 #include P99_ADVANCE_ID
34 #define P00_POSIX_DEFARG_DOCU(NAME, RET, ...) \
38 P99_MACRO_END(POSIX_DEFARG_DOCU);
41 P00_POSIX_DEFARG_DOCU(
pthread_barrier_init,
int, pthread_barrier_t *restrict objp,
const pthread_barrierattr_t *restrict attr,
unsigned count)
45 #define pthread_barrier_init(...) P99_CALL_DEFARG(pthread_barrier_init, 3, __VA_ARGS__)
46 #define pthread_barrier_init_defarg_1() 0
47 #define pthread_barrier_init_defarg_2() (pthread_barrier_init must have a count argument)
49 P00_POSIX_DEFARG_DOCU(
pthread_cond_init,
int, pthread_cond_t* objp, pthread_condattr_t
const* attr)
52 #define pthread_cond_init(...) P99_CALL_DEFARG(pthread_cond_init, 2, __VA_ARGS__)
53 #define pthread_cond_init_defarg_1() 0
55 P00_POSIX_DEFARG_DOCU(
pthread_mutex_init,
int, pthread_mutex_t* objp, pthread_mutexattr_t
const* attr)
58 #define pthread_mutex_init(...) P99_CALL_DEFARG(pthread_mutex_init, 2, __VA_ARGS__)
59 #define pthread_mutex_init_defarg_1() 0
61 P00_POSIX_DEFARG_DOCU(
pthread_rwlock_init,
int, pthread_rwlock_t* objp, pthread_rwlockattr_t
const* attr)
64 #define pthread_rwlock_init(...) P99_CALL_DEFARG(pthread_rwlock_init, 2, __VA_ARGS__)
65 #define pthread_rwlock_init_defarg_1() 0
67 P00_POSIX_DEFARG_DOCU(
pthread_spin_init,
int, pthread_spinlock_t* objp,
int pshared)
70 #define pthread_spin_init(...) P99_CALL_DEFARG(pthread_spin_init, 2, __VA_ARGS__)
71 #define pthread_spin_init_defarg_1() PTHREAD_PROCESS_PRIVATE
73 P00_POSIX_DEFARG_DOCU(
pthread_key_create,
int, pthread_key_t *key,
void (*destr_function) (
void *))
76 #define pthread_key_create(...) P99_CALL_DEFARG(pthread_key_create, 2, __VA_ARGS__)
77 #define pthread_key_create_defarg_1() 0
79 #define SOCKADDR_IN_INIIALIZER { .sin_family = AF_INET }
81 #define IN_ADDR_INITIALIZER P99_INIT
83 P00_POSIX_DEFARG_DOCU(
accept,
int,
int sockfd,
struct sockaddr *addr, socklen_t *addrlen)
89 #define accept(...) P99_CALL_DEFARG(accept, 3, __VA_ARGS__)
90 #define accept_defarg_1() 0
91 #define accept_defarg_2() &P99_LVAL(socklen_t)
93 P00_POSIX_DEFARG_DOCU(
socket,
int,
int domain,
int type,
int protocol)
99 #define socket(...) P99_CALL_DEFARG(socket, 3, __VA_ARGS__)
100 #define socket_defarg_1() SOCK_STREAM
101 #define socket_defarg_2() 0
103 P00_POSIX_DEFARG_DOCU(
inet_ntop,
char const*,
int af,
const void *src,
char *dst, socklen_t size)
110 #define inet_ntop(...) P99_CALL_DEFARG(inet_ntop, 4, __VA_ARGS__)
111 #define inet_ntop_defarg_2() P99_LVAL(char[INET6_ADDRSTRLEN])
112 #define inet_ntop_defarg_3() INET6_ADDRSTRLEN
115 P00_POSIX_DEFARG_DOCU(
realpath,
char*,
char const *path,
char *resolved_path)
121 #define realpath(...) P99_CALL_DEFARG(realpath, 2, __VA_ARGS__)
122 #define realpath_defarg_1() P99_LVAL(char[PATH_MAX])
125 P00_POSIX_DEFARG_DOCU(
getsockopt,
int,
int sockfd,
int level,
int optname,
void* optval, socklen_t*optlen)
129 #define getsockopt(...) P99_IF_GE(P99_NARG(__VA_ARGS__),5)(getsockopt(__VA_ARGS__))(p00_getsockopt(__VA_ARGS__))
131 #define p00_getsockopt(FD, LEV, OPTNAME, OPTVAL) \
132 getsockopt(FD, LEV, OPTNAME, OPTVAL, (socklen_t[1]){ sizeof *(OPTVAL) })
134 P00_POSIX_DEFARG_DOCU(
setsockopt,
int,
int sockfd,
int level,
int optname,
void* optval, socklen_t optlen)
138 #define setsockopt(...) P99_IF_GE(P99_NARG(__VA_ARGS__),5)(setsockopt(__VA_ARGS__))(p00_setsockopt(__VA_ARGS__))
140 #define p00_setsockopt(FD, LEV, OPTNAME, OPTVAL) (setsockopt)(FD, LEV, OPTNAME, OPTVAL, sizeof *(OPTVAL))