From dc5b105cda275b213b172faf53ba1f36c98860f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonin=20D=C3=A9cimo?= Date: Thu, 13 Jan 2022 14:50:24 +0100 Subject: [PATCH] Use mlvalue convenience macros --- src/unix/lwt_config.h | 8 ++++++++ src/unix/lwt_process_stubs.c | 4 ++-- src/unix/unix_c/unix_accept4.c | 2 +- src/unix/unix_c/unix_access_job.c | 2 +- src/unix/unix_c/unix_getaddrinfo_job.c | 2 +- src/unix/unix_c/unix_recv_send_utils.c | 7 +++---- src/unix/unix_c/unix_set_affinity.c | 2 +- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/unix/lwt_config.h b/src/unix/lwt_config.h index 91bbe4cc07..4fbe006455 100644 --- a/src/unix/lwt_config.h +++ b/src/unix/lwt_config.h @@ -31,4 +31,12 @@ #define CAML_NAME_SPACE #endif +#if OCAML_VERSION < 41200 +#define Val_none Val_int(0) +#define Some_val(v) Field(v, 0) +#define Tag_some 0 +#define Is_none(v) ((v) == Val_none) +#define Is_some(v) Is_block(v) +#endif + #endif // #ifndef _LWT_CONFIG_H_ diff --git a/src/unix/lwt_process_stubs.c b/src/unix/lwt_process_stubs.c index 11f6bfd232..6e527452ff 100644 --- a/src/unix/lwt_process_stubs.c +++ b/src/unix/lwt_process_stubs.c @@ -20,8 +20,8 @@ static HANDLE get_handle(value opt) { value fd; - if (Is_block(opt)) { - fd = Field(opt, 0); + if (Is_some(opt)) { + fd = Some_val(opt); if (Descr_kind_val(fd) == KIND_SOCKET) { win32_maperr(ERROR_INVALID_HANDLE); uerror("CreateProcess", Nothing); diff --git a/src/unix/unix_c/unix_accept4.c b/src/unix/unix_c/unix_accept4.c index f50c114d73..001a05b948 100644 --- a/src/unix/unix_c/unix_accept4.c +++ b/src/unix/unix_c/unix_accept4.c @@ -20,7 +20,7 @@ CAMLprim value lwt_unix_accept4(value vcloexec, value vnonblock, value vsock) union sock_addr_union addr; socklen_param_type addr_len; - int cloexec = Is_block(vcloexec) && Bool_val(Field(vcloexec, 0)) ? SOCK_CLOEXEC : 0; + int cloexec = Is_some(vcloexec) && Bool_val(Some_val(vcloexec)) ? SOCK_CLOEXEC : 0; int nonblock = Bool_val(vnonblock) ? SOCK_NONBLOCK : 0; addr_len = sizeof(addr); diff --git a/src/unix/unix_c/unix_access_job.c b/src/unix/unix_c/unix_access_job.c index 2993d5e54b..a054fc34cb 100644 --- a/src/unix/unix_c/unix_access_job.c +++ b/src/unix/unix_c/unix_access_job.c @@ -49,7 +49,7 @@ static int access_permission_table[] = { static int int_of_access_permissions(value list) { int result = 0; - while (Is_block(list)) { + while (list != Val_emptylist) { result |= access_permission_table[Int_val(Field(list, 0))]; list = Field(list, 1); }; diff --git a/src/unix/unix_c/unix_getaddrinfo_job.c b/src/unix/unix_c/unix_getaddrinfo_job.c index f0a79c4d63..a3307fbbad 100644 --- a/src/unix/unix_c/unix_getaddrinfo_job.c +++ b/src/unix/unix_c/unix_getaddrinfo_job.c @@ -92,7 +92,7 @@ CAMLprim value lwt_unix_getaddrinfo_job(value node, value service, value hints) job->info = NULL; memset(&job->hints, 0, sizeof(struct addrinfo)); job->hints.ai_family = PF_UNSPEC; - for (/*nothing*/; Is_block(hints); hints = Field(hints, 1)) { + for (/*nothing*/; hints != Val_emptylist; hints = Field(hints, 1)) { value v = Field(hints, 0); if (Is_block(v)) switch (Tag_val(v)) { case 0: /* AI_FAMILY of socket_domain */ diff --git a/src/unix/unix_c/unix_recv_send_utils.c b/src/unix/unix_c/unix_recv_send_utils.c index d90c0355ce..f9486afe9f 100644 --- a/src/unix/unix_c/unix_recv_send_utils.c +++ b/src/unix/unix_c/unix_recv_send_utils.c @@ -73,11 +73,10 @@ value wrapper_send_msg(int fd, int n_iovs, struct iovec *iovs, msg.msg_iov = iovs; msg.msg_iovlen = n_iovs; - /* dest: Unix.sockaddr option */ - if (Is_block(dest)) { + if (Is_some(dest)) { union sock_addr_union addr; socklen_t addr_len; - get_sockaddr(Field(dest, 0), &addr, &addr_len); + get_sockaddr(Some_val(dest), &addr, &addr_len); msg.msg_name = &addr.s_gen; msg.msg_namelen = addr_len; @@ -97,7 +96,7 @@ value wrapper_send_msg(int fd, int n_iovs, struct iovec *iovs, cm->cmsg_len = CMSG_LEN(n_fds * sizeof(int)); int *fds = (int *)CMSG_DATA(cm); - for (; Is_block(val_fds); val_fds = Field(val_fds, 1), fds++) + for (/*nothing*/; val_fds != Val_emptylist; val_fds = Field(val_fds, 1), fds++) *fds = Int_val(Field(val_fds, 0)); }; #else diff --git a/src/unix/unix_c/unix_set_affinity.c b/src/unix/unix_c/unix_set_affinity.c index dcf8e3f6f0..dc49b5eabf 100644 --- a/src/unix/unix_c/unix_set_affinity.c +++ b/src/unix/unix_c/unix_set_affinity.c @@ -23,7 +23,7 @@ CAMLprim value lwt_unix_set_affinity(value val_pid, value val_cpus) { cpu_set_t cpus; CPU_ZERO(&cpus); - for (; Is_block(val_cpus); val_cpus = Field(val_cpus, 1)) + for (/*nothing*/; val_cpus != Val_emptylist; val_cpus = Field(val_cpus, 1)) CPU_SET(Int_val(Field(val_cpus, 0)), &cpus); if (sched_setaffinity(Int_val(val_pid), sizeof(cpu_set_t), &cpus) < 0) uerror("sched_setaffinity", Nothing);