Skip to content

Commit d7719df

Browse files
committed
musl: time64: set link names for symbols
This corresponds to upstream commit bminor/musl@1febd21 (most symbols) and bminor/musl@22daaea (only dlsym)
1 parent ad9827f commit d7719df

File tree

4 files changed

+58
-34
lines changed

4 files changed

+58
-34
lines changed

src/unix/linux_like/linux/mod.rs

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6108,7 +6108,7 @@ cfg_if! {
61086108
pub fn aio_error(aiocbp: *const aiocb) -> c_int;
61096109
#[cfg_attr(gnu_file_offset_bits64, link_name = "aio_return64")]
61106110
pub fn aio_return(aiocbp: *mut aiocb) -> ssize_t;
6111-
#[cfg_attr(gnu_time_bits64, link_name = "__aio_suspend_time64")]
6111+
#[cfg_attr(any(musl32_time64, gnu_time_bits64), link_name = "__aio_suspend_time64")]
61126112
pub fn aio_suspend(
61136113
aiocb_list: *const *const aiocb,
61146114
nitems: c_int,
@@ -6171,6 +6171,7 @@ cfg_if! {
61716171
flags: c_ulong,
61726172
) -> isize;
61736173
#[cfg_attr(gnu_time_bits64, link_name = "__futimes64")]
6174+
#[cfg_attr(musl32_time64, link_name = "__futimes_time64")]
61746175
pub fn futimes(fd: c_int, times: *const crate::timeval) -> c_int;
61756176
}
61766177
}
@@ -6200,7 +6201,7 @@ cfg_if! {
62006201
msg_len: size_t,
62016202
msg_prio: *mut c_uint,
62026203
) -> ssize_t;
6203-
#[cfg_attr(gnu_time_bits64, link_name = "__mq_timedreceive_time64")]
6204+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__mq_timedreceive_time64")]
62046205
pub fn mq_timedreceive(
62056206
mqd: crate::mqd_t,
62066207
msg_ptr: *mut c_char,
@@ -6214,7 +6215,7 @@ cfg_if! {
62146215
msg_len: size_t,
62156216
msg_prio: c_uint,
62166217
) -> c_int;
6217-
#[cfg_attr(gnu_time_bits64, link_name = "__mq_timedsend_time64")]
6218+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__mq_timedsend_time64")]
62186219
pub fn mq_timedsend(
62196220
mqd: crate::mqd_t,
62206221
msg_ptr: *const c_char,
@@ -6266,6 +6267,7 @@ extern "C" {
62666267
pub fn lcong48(p: *mut c_ushort);
62676268

62686269
#[cfg_attr(gnu_time_bits64, link_name = "__lutimes64")]
6270+
#[cfg_attr(musl32_time64, link_name = "__lutimes_time64")]
62696271
pub fn lutimes(file: *const c_char, times: *const crate::timeval) -> c_int;
62706272

62716273
pub fn setpwent();
@@ -6361,9 +6363,9 @@ extern "C" {
63616363
pub fn fremovexattr(filedes: c_int, name: *const c_char) -> c_int;
63626364
pub fn signalfd(fd: c_int, mask: *const crate::sigset_t, flags: c_int) -> c_int;
63636365
pub fn timerfd_create(clockid: crate::clockid_t, flags: c_int) -> c_int;
6364-
#[cfg_attr(gnu_time_bits64, link_name = "__timerfd_gettime64")]
6366+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__timerfd_gettime64")]
63656367
pub fn timerfd_gettime(fd: c_int, curr_value: *mut itimerspec) -> c_int;
6366-
#[cfg_attr(gnu_time_bits64, link_name = "__timerfd_settime64")]
6368+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__timerfd_settime64")]
63676369
pub fn timerfd_settime(
63686370
fd: c_int,
63696371
flags: c_int,
@@ -6380,6 +6382,7 @@ extern "C" {
63806382
) -> c_int;
63816383
pub fn dup3(oldfd: c_int, newfd: c_int, flags: c_int) -> c_int;
63826384
#[cfg_attr(gnu_time_bits64, link_name = "__sigtimedwait64")]
6385+
#[cfg_attr(musl32_time64, link_name = "__sigtimedwait_time64")]
63836386
pub fn sigtimedwait(
63846387
set: *const sigset_t,
63856388
info: *mut siginfo_t,
@@ -6500,6 +6503,7 @@ extern "C" {
65006503
pub fn sched_get_priority_max(policy: c_int) -> c_int;
65016504
pub fn tee(fd_in: c_int, fd_out: c_int, len: size_t, flags: c_uint) -> ssize_t;
65026505
#[cfg_attr(gnu_time_bits64, link_name = "__settimeofday64")]
6506+
#[cfg_attr(musl32_time64, link_name = "__settimeofday_time64")]
65036507
pub fn settimeofday(tv: *const crate::timeval, tz: *const crate::timezone) -> c_int;
65046508
pub fn splice(
65056509
fd_in: c_int,
@@ -6514,8 +6518,10 @@ extern "C" {
65146518
pub fn eventfd_write(fd: c_int, value: eventfd_t) -> c_int;
65156519

65166520
#[cfg_attr(gnu_time_bits64, link_name = "__sched_rr_get_interval64")]
6521+
#[cfg_attr(musl32_time64, link_name = "__sched_rr_get_interval_time64")]
65176522
pub fn sched_rr_get_interval(pid: crate::pid_t, tp: *mut crate::timespec) -> c_int;
65186523
#[cfg_attr(gnu_time_bits64, link_name = "__sem_timedwait64")]
6524+
#[cfg_attr(musl32_time64, link_name = "__sem_timedwait_time64")]
65196525
pub fn sem_timedwait(sem: *mut sem_t, abstime: *const crate::timespec) -> c_int;
65206526
pub fn sem_getvalue(sem: *mut sem_t, sval: *mut c_int) -> c_int;
65216527
pub fn sched_setparam(pid: crate::pid_t, param: *const crate::sched_param) -> c_int;
@@ -6535,6 +6541,7 @@ extern "C" {
65356541
pub fn prctl(option: c_int, ...) -> c_int;
65366542
pub fn sched_getparam(pid: crate::pid_t, param: *mut crate::sched_param) -> c_int;
65376543
#[cfg_attr(gnu_time_bits64, link_name = "__ppoll64")]
6544+
#[cfg_attr(musl32_time64, link_name = "__ppoll_time64")]
65386545
pub fn ppoll(
65396546
fds: *mut crate::pollfd,
65406547
nfds: nfds_t,
@@ -6548,6 +6555,7 @@ extern "C" {
65486555
pub fn pthread_mutexattr_setprotocol(attr: *mut pthread_mutexattr_t, protocol: c_int) -> c_int;
65496556

65506557
#[cfg_attr(gnu_time_bits64, link_name = "__pthread_mutex_timedlock64")]
6558+
#[cfg_attr(musl32_time64, link_name = "__pthread_mutex_timedlock_time64")]
65516559
pub fn pthread_mutex_timedlock(
65526560
lock: *mut pthread_mutex_t,
65536561
abstime: *const crate::timespec,
@@ -6582,7 +6590,10 @@ extern "C" {
65826590
...
65836591
) -> c_int;
65846592
pub fn sched_getscheduler(pid: crate::pid_t) -> c_int;
6585-
#[cfg_attr(gnu_time_bits64, link_name = "__clock_nanosleep_time64")]
6593+
#[cfg_attr(
6594+
any(gnu_time_bits64, musl32_time64),
6595+
link_name = "__clock_nanosleep_time64"
6596+
)]
65866597
pub fn clock_nanosleep(
65876598
clk_id: crate::clockid_t,
65886599
flags: c_int,
@@ -6840,9 +6851,9 @@ extern "C" {
68406851
) -> c_int;
68416852
pub fn timer_delete(timerid: crate::timer_t) -> c_int;
68426853
pub fn timer_getoverrun(timerid: crate::timer_t) -> c_int;
6843-
#[cfg_attr(gnu_time_bits64, link_name = "__timer_gettime64")]
6854+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__timer_gettime64")]
68446855
pub fn timer_gettime(timerid: crate::timer_t, curr_value: *mut crate::itimerspec) -> c_int;
6845-
#[cfg_attr(gnu_time_bits64, link_name = "__timer_settime64")]
6856+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__timer_settime64")]
68466857
pub fn timer_settime(
68476858
timerid: crate::timer_t,
68486859
flags: c_int,

src/unix/linux_like/linux/musl/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,7 @@ extern "C" {
841841
vlen: c_uint,
842842
flags: c_uint,
843843
) -> c_int;
844+
#[cfg_attr(musl32_time64, link_name = "__recvmmsg_time64")]
844845
pub fn recvmmsg(
845846
sockfd: c_int,
846847
msgvec: *mut crate::mmsghdr,
@@ -857,6 +858,7 @@ extern "C" {
857858
new_limit: *const crate::rlimit,
858859
old_limit: *mut crate::rlimit,
859860
) -> c_int;
861+
#[cfg_attr(musl32_time64, link_name = "__gettimeofday_time64")]
860862
pub fn gettimeofday(tp: *mut crate::timeval, tz: *mut c_void) -> c_int;
861863
pub fn ptrace(request: c_int, ...) -> c_long;
862864
pub fn getpriority(which: c_int, who: crate::id_t) -> c_int;
@@ -892,7 +894,9 @@ extern "C" {
892894
// Added in `musl` 1.2.2
893895
pub fn reallocarray(ptr: *mut c_void, nmemb: size_t, size: size_t) -> *mut c_void;
894896

897+
#[cfg_attr(musl32_time64, link_name = "__adjtimex_time64")]
895898
pub fn adjtimex(buf: *mut crate::timex) -> c_int;
899+
#[cfg_attr(musl32_time64, link_name = "__clock_adjtime64")]
896900
pub fn clock_adjtime(clk_id: crate::clockid_t, buf: *mut crate::timex) -> c_int;
897901

898902
pub fn ctermid(s: *mut c_char) -> *mut c_char;

src/unix/linux_like/mod.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,10 +1921,11 @@ extern "C" {
19211921
pub fn mincore(addr: *mut c_void, len: size_t, vec: *mut c_uchar) -> c_int;
19221922

19231923
#[cfg_attr(gnu_time_bits64, link_name = "__clock_getres64")]
1924+
#[cfg_attr(musl32_time64, link_name = "__clock_getres_time64")]
19241925
pub fn clock_getres(clk_id: crate::clockid_t, tp: *mut crate::timespec) -> c_int;
1925-
#[cfg_attr(gnu_time_bits64, link_name = "__clock_gettime64")]
1926+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__clock_gettime64")]
19261927
pub fn clock_gettime(clk_id: crate::clockid_t, tp: *mut crate::timespec) -> c_int;
1927-
#[cfg_attr(gnu_time_bits64, link_name = "__clock_settime64")]
1928+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__clock_settime64")]
19281929
pub fn clock_settime(clk_id: crate::clockid_t, tp: *const crate::timespec) -> c_int;
19291930
pub fn clock_getcpuclockid(pid: crate::pid_t, clk_id: *mut crate::clockid_t) -> c_int;
19301931

@@ -1952,8 +1953,10 @@ extern "C" {
19521953
#[cfg_attr(gnu_file_offset_bits64, link_name = "posix_fadvise64")]
19531954
pub fn posix_fadvise(fd: c_int, offset: off_t, len: off_t, advise: c_int) -> c_int;
19541955
#[cfg_attr(gnu_time_bits64, link_name = "__futimens64")]
1956+
#[cfg_attr(musl32_time64, link_name = "__futimens_time64")]
19551957
pub fn futimens(fd: c_int, times: *const crate::timespec) -> c_int;
19561958
#[cfg_attr(gnu_time_bits64, link_name = "__utimensat64")]
1959+
#[cfg_attr(musl32_time64, link_name = "__utimensat_time64")]
19571960
pub fn utimensat(
19581961
dirfd: c_int,
19591962
path: *const c_char,
@@ -2003,7 +2006,7 @@ extern "C" {
20032006
pub fn sbrk(increment: intptr_t) -> *mut c_void;
20042007
pub fn setresgid(rgid: crate::gid_t, egid: crate::gid_t, sgid: crate::gid_t) -> c_int;
20052008
pub fn setresuid(ruid: crate::uid_t, euid: crate::uid_t, suid: crate::uid_t) -> c_int;
2006-
#[cfg_attr(gnu_time_bits64, link_name = "__wait4_time64")]
2009+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__wait4_time64")]
20072010
pub fn wait4(
20082011
pid: crate::pid_t,
20092012
status: *mut c_int,

src/unix/mod.rs

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -881,6 +881,7 @@ extern "C" {
881881
all(not(gnu_time_bits64), gnu_file_offset_bits64),
882882
link_name = "fstat64"
883883
)]
884+
#[cfg_attr(musl32_time64, link_name = "__fstat_time64")]
884885
pub fn fstat(fildes: c_int, buf: *mut stat) -> c_int;
885886

886887
pub fn mkdir(path: *const c_char, mode: mode_t) -> c_int;
@@ -899,6 +900,7 @@ extern "C" {
899900
all(not(gnu_time_bits64), gnu_file_offset_bits64),
900901
link_name = "stat64"
901902
)]
903+
#[cfg_attr(musl32_time64, link_name = "__stat_time64")]
902904
pub fn stat(path: *const c_char, buf: *mut stat) -> c_int;
903905

904906
pub fn pclose(stream: *mut crate::FILE) -> c_int;
@@ -991,6 +993,7 @@ extern "C" {
991993
all(not(gnu_time_bits64), gnu_file_offset_bits64),
992994
link_name = "fstatat64"
993995
)]
996+
#[cfg_attr(musl32_time64, link_name = "__fstatat_time64")]
994997
pub fn fstatat(dirfd: c_int, pathname: *const c_char, buf: *mut stat, flags: c_int) -> c_int;
995998
pub fn linkat(
996999
olddirfd: c_int,
@@ -1091,6 +1094,7 @@ extern "C" {
10911094
)]
10921095
#[cfg_attr(target_os = "netbsd", link_name = "__nanosleep50")]
10931096
#[cfg_attr(gnu_time_bits64, link_name = "__nanosleep64")]
1097+
#[cfg_attr(musl32_time64, link_name = "__nanosleep_time64")]
10941098
pub fn nanosleep(rqtp: *const timespec, rmtp: *mut timespec) -> c_int;
10951099
pub fn tcgetpgrp(fd: c_int) -> pid_t;
10961100
pub fn tcsetpgrp(fd: c_int, pgrp: crate::pid_t) -> c_int;
@@ -1135,7 +1139,7 @@ extern "C" {
11351139
pub fn umask(mask: mode_t) -> mode_t;
11361140

11371141
#[cfg_attr(target_os = "netbsd", link_name = "__utime50")]
1138-
#[cfg_attr(gnu_time_bits64, link_name = "__utime64")]
1142+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__utime64")]
11391143
pub fn utime(file: *const c_char, buf: *const utimbuf) -> c_int;
11401144

11411145
#[cfg_attr(
@@ -1190,6 +1194,7 @@ extern "C" {
11901194
all(not(gnu_time_bits64), gnu_file_offset_bits64),
11911195
link_name = "lstat64"
11921196
)]
1197+
#[cfg_attr(musl32_time64, link_name = "__lstat_time64")]
11931198
pub fn lstat(path: *const c_char, buf: *mut stat) -> c_int;
11941199

11951200
#[cfg_attr(
@@ -1221,6 +1226,7 @@ extern "C" {
12211226

12221227
#[cfg_attr(target_os = "netbsd", link_name = "__getrusage50")]
12231228
#[cfg_attr(gnu_time_bits64, link_name = "__getrusage64")]
1229+
#[cfg_attr(musl32_time64, link_name = "__getrusage_time64")]
12241230
pub fn getrusage(resource: c_int, usage: *mut rusage) -> c_int;
12251231

12261232
#[cfg_attr(
@@ -1297,6 +1303,7 @@ extern "C" {
12971303
link_name = "pthread_cond_timedwait$UNIX2003"
12981304
)]
12991305
#[cfg_attr(gnu_time_bits64, link_name = "__pthread_cond_timedwait64")]
1306+
#[cfg_attr(musl32_time64, link_name = "__pthread_cond_timedwait_time64")]
13001307
pub fn pthread_cond_timedwait(
13011308
cond: *mut pthread_cond_t,
13021309
lock: *mut pthread_mutex_t,
@@ -1365,9 +1372,11 @@ extern "C" {
13651372

13661373
#[cfg_attr(target_os = "netbsd", link_name = "__utimes50")]
13671374
#[cfg_attr(gnu_time_bits64, link_name = "__utimes64")]
1375+
#[cfg_attr(musl32_time64, link_name = "__utimes_time64")]
13681376
pub fn utimes(filename: *const c_char, times: *const crate::timeval) -> c_int;
13691377
pub fn dlopen(filename: *const c_char, flag: c_int) -> *mut c_void;
13701378
pub fn dlerror() -> *mut c_char;
1379+
#[cfg_attr(musl32_time64, link_name = "__dlsym_time64")]
13711380
pub fn dlsym(handle: *mut c_void, symbol: *const c_char) -> *mut c_void;
13721381
pub fn dlclose(handle: *mut c_void) -> c_int;
13731382

@@ -1415,49 +1424,44 @@ extern "C" {
14151424
pub fn res_init() -> c_int;
14161425

14171426
#[cfg_attr(target_os = "netbsd", link_name = "__gmtime_r50")]
1418-
#[cfg_attr(any(target_env = "musl", target_env = "ohos"), allow(deprecated))]
1419-
// FIXME(time): for `time_t`
14201427
#[cfg_attr(gnu_time_bits64, link_name = "__gmtime64_r")]
1428+
#[cfg_attr(not(musl32_time64), allow(deprecated))]
1429+
#[cfg_attr(musl32_time64, link_name = "__gmtime64_r")]
14211430
pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
14221431
#[cfg_attr(target_os = "netbsd", link_name = "__localtime_r50")]
1423-
#[cfg_attr(any(target_env = "musl", target_env = "ohos"), allow(deprecated))]
1424-
// FIXME(time): for `time_t`
14251432
#[cfg_attr(gnu_time_bits64, link_name = "__localtime64_r")]
1433+
#[cfg_attr(not(musl32_time64), allow(deprecated))]
1434+
#[cfg_attr(musl32_time64, link_name = "__localtime64_r")]
14261435
pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
14271436
#[cfg_attr(
14281437
all(target_os = "macos", target_arch = "x86"),
14291438
link_name = "mktime$UNIX2003"
14301439
)]
14311440
#[cfg_attr(target_os = "netbsd", link_name = "__mktime50")]
1432-
#[cfg_attr(any(target_env = "musl", target_env = "ohos"), allow(deprecated))]
1433-
// FIXME: for `time_t`
1434-
#[cfg_attr(gnu_time_bits64, link_name = "__mktime64")]
1441+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__mktime64")]
1442+
#[cfg_attr(not(musl32_time64), allow(deprecated))]
14351443
pub fn mktime(tm: *mut tm) -> time_t;
14361444
#[cfg_attr(target_os = "netbsd", link_name = "__time50")]
1437-
#[cfg_attr(any(target_env = "musl", target_env = "ohos"), allow(deprecated))]
1438-
// FIXME: for `time_t`
1439-
#[cfg_attr(gnu_time_bits64, link_name = "__time64")]
1445+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__time64")]
1446+
#[cfg_attr(not(musl32_time64), allow(deprecated))]
14401447
pub fn time(time: *mut time_t) -> time_t;
14411448
#[cfg_attr(target_os = "netbsd", link_name = "__gmtime50")]
1442-
#[cfg_attr(any(target_env = "musl", target_env = "ohos"), allow(deprecated))]
1443-
// FIXME(time): for `time_t`
1444-
#[cfg_attr(gnu_time_bits64, link_name = "__gmtime64")]
1449+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__gmtime64")]
1450+
#[cfg_attr(not(musl32_time64), allow(deprecated))]
14451451
pub fn gmtime(time_p: *const time_t) -> *mut tm;
14461452
#[cfg_attr(target_os = "netbsd", link_name = "__locatime50")]
1447-
#[cfg_attr(any(target_env = "musl", target_env = "ohos"), allow(deprecated))]
1448-
// FIXME(time): for `time_t`
1449-
#[cfg_attr(gnu_time_bits64, link_name = "__localtime64")]
1453+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__localtime64")]
1454+
#[cfg_attr(not(musl32_time64), allow(deprecated))]
14501455
pub fn localtime(time_p: *const time_t) -> *mut tm;
14511456
#[cfg_attr(target_os = "netbsd", link_name = "__difftime50")]
1452-
#[cfg_attr(any(target_env = "musl", target_env = "ohos"), allow(deprecated))]
1453-
// FIXME(time): for `time_t`
1454-
#[cfg_attr(gnu_time_bits64, link_name = "__difftime64")]
1457+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__difftime64")]
1458+
#[cfg_attr(not(musl32_time64), allow(deprecated))]
14551459
pub fn difftime(time1: time_t, time0: time_t) -> c_double;
14561460
#[cfg(not(target_os = "aix"))]
14571461
#[cfg_attr(target_os = "netbsd", link_name = "__timegm50")]
1458-
#[cfg_attr(any(target_env = "musl", target_env = "ohos"), allow(deprecated))]
1459-
// FIXME(time): for `time_t`
14601462
#[cfg_attr(gnu_time_bits64, link_name = "__timegm64")]
1463+
#[cfg_attr(not(musl32_time64), allow(deprecated))]
1464+
#[cfg_attr(musl32_time64, link_name = "__timegm_time64")]
14611465
pub fn timegm(tm: *mut crate::tm) -> time_t;
14621466

14631467
#[cfg_attr(target_os = "netbsd", link_name = "__mknod50")]
@@ -1517,6 +1521,7 @@ extern "C" {
15171521
#[cfg_attr(target_os = "netbsd", link_name = "__select50")]
15181522
#[cfg_attr(target_os = "aix", link_name = "__fd_select")]
15191523
#[cfg_attr(gnu_time_bits64, link_name = "__select64")]
1524+
#[cfg_attr(musl32_time64, link_name = "__select_time64")]
15201525
pub fn select(
15211526
nfds: c_int,
15221527
readfds: *mut fd_set,
@@ -1639,7 +1644,7 @@ cfg_if! {
16391644
target_os = "aix",
16401645
)))] {
16411646
extern "C" {
1642-
#[cfg_attr(gnu_time_bits64, link_name = "__adjtime64")]
1647+
#[cfg_attr(any(gnu_time_bits64, musl32_time64), link_name = "__adjtime64")]
16431648
pub fn adjtime(delta: *const timeval, olddelta: *mut timeval) -> c_int;
16441649
}
16451650
} else if #[cfg(target_os = "solaris")] {
@@ -1794,6 +1799,7 @@ cfg_if! {
17941799
)]
17951800
#[cfg_attr(target_os = "netbsd", link_name = "__pselect50")]
17961801
#[cfg_attr(gnu_time_bits64, link_name = "__pselect64")]
1802+
#[cfg_attr(musl32_time64, link_name = "__pselect_time64")]
17971803
pub fn pselect(
17981804
nfds: c_int,
17991805
readfds: *mut fd_set,

0 commit comments

Comments
 (0)