Skip to content

Commit 397f851

Browse files
committed
Auto merge of rust-lang#576 - vojtechkral:solaris, r=alexcrichton
Solaris: Add ports support, correct some types, add some errnos This should benefit Illumos too...
2 parents c34a802 + 04989f4 commit 397f851

File tree

1 file changed

+113
-45
lines changed

1 file changed

+113
-45
lines changed

src/unix/solaris/mod.rs

Lines changed: 113 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,36 @@ use dox::{mem, Option};
33
pub type c_char = i8;
44
pub type c_long = i64;
55
pub type c_ulong = u64;
6-
pub type clockid_t = ::c_int;
76

8-
pub type blkcnt_t = i64;
9-
pub type clock_t = i64;
10-
pub type daddr_t = i64;
11-
pub type dev_t = u64;
12-
pub type fsblkcnt_t = u64;
13-
pub type fsfilcnt_t = u64;
14-
pub type ino_t = i64;
15-
pub type key_t = i32;
16-
pub type major_t = u32;
17-
pub type minor_t = u32;
18-
pub type mode_t = u32;
19-
pub type nlink_t = u32;
20-
pub type rlim_t = u64;
21-
pub type speed_t = u32;
22-
pub type tcflag_t = u32;
23-
pub type time_t = i64;
24-
pub type wchar_t = i32;
7+
pub type clockid_t = ::c_int;
8+
pub type blkcnt_t = ::c_long;
9+
pub type clock_t = ::c_long;
10+
pub type daddr_t = ::c_long;
11+
pub type dev_t = ::c_ulong;
12+
pub type fsblkcnt_t = ::c_ulong;
13+
pub type fsfilcnt_t = ::c_ulong;
14+
pub type ino_t = ::c_ulong;
15+
pub type key_t = ::c_int;
16+
pub type major_t = ::c_uint;
17+
pub type minor_t = ::c_uint;
18+
pub type mode_t = ::c_uint;
19+
pub type nlink_t = ::c_uint;
20+
pub type rlim_t = ::c_ulong;
21+
pub type speed_t = ::c_uint;
22+
pub type tcflag_t = ::c_uint;
23+
pub type time_t = ::c_long;
24+
pub type wchar_t = ::c_int;
2525
pub type nfds_t = ::c_ulong;
2626

2727
pub type suseconds_t = ::c_long;
28-
pub type off_t = i64;
28+
pub type off_t = ::c_long;
2929
pub type useconds_t = ::c_uint;
30-
pub type socklen_t = u32;
30+
pub type socklen_t = ::c_uint;
3131
pub type sa_family_t = u16;
3232
pub type pthread_t = ::c_uint;
3333
pub type pthread_key_t = ::c_uint;
34-
pub type blksize_t = u32;
35-
pub type fflags_t = u32;
34+
pub type blksize_t = ::c_int;
35+
pub type fflags_t = ::c_int;
3636
pub type nl_item = ::c_int;
3737
pub type id_t = ::c_int;
3838
pub type idtype_t = ::c_uint;
@@ -340,6 +340,14 @@ s! {
340340
pub if_index: ::c_uint,
341341
pub if_name: *mut ::c_char,
342342
}
343+
344+
pub struct port_event {
345+
pub portev_events: ::c_int,
346+
pub portev_source: ::c_ushort,
347+
pub portev_pad: ::c_ushort,
348+
pub portev_object: ::uintptr_t,
349+
pub portev_user: ::uintptr_t,
350+
}
343351
}
344352

345353
pub const LC_CTYPE: ::c_int = 0;
@@ -617,7 +625,7 @@ pub const E2BIG: ::c_int = 7;
617625
pub const ENOEXEC: ::c_int = 8;
618626
pub const EBADF: ::c_int = 9;
619627
pub const ECHILD: ::c_int = 10;
620-
pub const EDEADLK: ::c_int = 45;
628+
pub const EAGAIN: ::c_int = 11;
621629
pub const ENOMEM: ::c_int = 12;
622630
pub const EACCES: ::c_int = 13;
623631
pub const EFAULT: ::c_int = 14;
@@ -641,11 +649,65 @@ pub const EMLINK: ::c_int = 31;
641649
pub const EPIPE: ::c_int = 32;
642650
pub const EDOM: ::c_int = 33;
643651
pub const ERANGE: ::c_int = 34;
652+
pub const ENOMSG: ::c_int = 35;
653+
pub const EIDRM: ::c_int = 36;
654+
pub const ECHRNG: ::c_int = 37;
655+
pub const EL2NSYNC: ::c_int = 38;
656+
pub const EL3HLT: ::c_int = 39;
657+
pub const EL3RST: ::c_int = 40;
658+
pub const ELNRNG: ::c_int = 41;
659+
pub const EUNATCH: ::c_int = 42;
660+
pub const ENOCSI: ::c_int = 43;
661+
pub const EL2HLT: ::c_int = 44;
662+
pub const EDEADLK: ::c_int = 45;
663+
pub const ENOLCK: ::c_int = 46;
664+
pub const ECANCELED: ::c_int = 47;
644665
pub const ENOTSUP: ::c_int = 48;
645-
pub const EAGAIN: ::c_int = 11;
646-
pub const EWOULDBLOCK: ::c_int = 11;
647-
pub const EINPROGRESS: ::c_int = 150;
648-
pub const EALREADY: ::c_int = 149;
666+
pub const EDQUOT: ::c_int = 49;
667+
pub const EBADE: ::c_int = 50;
668+
pub const EBADR: ::c_int = 51;
669+
pub const EXFULL: ::c_int = 52;
670+
pub const ENOANO: ::c_int = 53;
671+
pub const EBADRQC: ::c_int = 54;
672+
pub const EBADSLT: ::c_int = 55;
673+
pub const EDEADLOCK: ::c_int = 56;
674+
pub const EBFONT: ::c_int = 57;
675+
pub const EOWNERDEAD: ::c_int = 58;
676+
pub const ENOTRECOVERABLE: ::c_int = 59;
677+
pub const ENOSTR: ::c_int = 60;
678+
pub const ENODATA: ::c_int = 61;
679+
pub const ETIME: ::c_int = 62;
680+
pub const ENOSR: ::c_int = 63;
681+
pub const ENONET: ::c_int = 64;
682+
pub const ENOPKG: ::c_int = 65;
683+
pub const EREMOTE: ::c_int = 66;
684+
pub const ENOLINK: ::c_int = 67;
685+
pub const EADV: ::c_int = 68;
686+
pub const ESRMNT: ::c_int = 69;
687+
pub const ECOMM: ::c_int = 70;
688+
pub const EPROTO: ::c_int = 71;
689+
pub const ELOCKUNMAPPED: ::c_int = 72;
690+
pub const ENOTACTIVE: ::c_int = 73;
691+
pub const EMULTIHOP: ::c_int = 74;
692+
pub const EADI: ::c_int = 75;
693+
pub const EBADMSG: ::c_int = 77;
694+
pub const ENAMETOOLONG: ::c_int = 78;
695+
pub const EOVERFLOW: ::c_int = 79;
696+
pub const ENOTUNIQ: ::c_int = 80;
697+
pub const EBADFD: ::c_int = 81;
698+
pub const EREMCHG: ::c_int = 82;
699+
pub const ELIBACC: ::c_int = 83;
700+
pub const ELIBBAD: ::c_int = 84;
701+
pub const ELIBSCN: ::c_int = 85;
702+
pub const ELIBMAX: ::c_int = 86;
703+
pub const ELIBEXEC: ::c_int = 87;
704+
pub const EILSEQ: ::c_int = 88;
705+
pub const ENOSYS: ::c_int = 89;
706+
pub const ELOOP: ::c_int = 90;
707+
pub const ERESTART: ::c_int = 91;
708+
pub const ESTRPIPE: ::c_int = 92;
709+
pub const ENOTEMPTY: ::c_int = 93;
710+
pub const EUSERS: ::c_int = 94;
649711
pub const ENOTSOCK: ::c_int = 95;
650712
pub const EDESTADDRREQ: ::c_int = 96;
651713
pub const EMSGSIZE: ::c_int = 97;
@@ -670,26 +732,11 @@ pub const ESHUTDOWN: ::c_int = 143;
670732
pub const ETOOMANYREFS: ::c_int = 144;
671733
pub const ETIMEDOUT: ::c_int = 145;
672734
pub const ECONNREFUSED: ::c_int = 146;
673-
pub const ELOOP: ::c_int = 90;
674-
pub const ENAMETOOLONG: ::c_int = 78;
675735
pub const EHOSTDOWN: ::c_int = 147;
676736
pub const EHOSTUNREACH: ::c_int = 148;
677-
pub const ENOTEMPTY: ::c_int = 93;
678-
pub const EUSERS: ::c_int = 94;
679-
pub const EDQUOT: ::c_int = 49;
680-
pub const ESTALE: ::c_int = 151;
681-
pub const EREMOTE: ::c_int = 66;
682-
pub const ENOLCK: ::c_int = 46;
683-
pub const ENOSYS: ::c_int = 89;
684-
pub const EIDRM: ::c_int = 36;
685-
pub const ENOMSG: ::c_int = 35;
686-
pub const EOVERFLOW: ::c_int = 79;
687-
pub const ECANCELED: ::c_int = 47;
688-
pub const EILSEQ: ::c_int = 88;
689-
pub const EBADMSG: ::c_int = 77;
690-
pub const EMULTIHOP: ::c_int = 74;
691-
pub const ENOLINK: ::c_int = 67;
692-
pub const EPROTO: ::c_int = 71;
737+
pub const EWOULDBLOCK: ::c_int = EAGAIN;
738+
pub const EALREADY: ::c_int = 149;
739+
pub const EINPROGRESS: ::c_int = 150;
693740

694741
pub const EAI_SYSTEM: ::c_int = 11;
695742

@@ -965,6 +1012,16 @@ pub const RTLD_NODELETE: ::c_int = 0x1000;
9651012
pub const RTLD_FIRST: ::c_int = 0x2000;
9661013
pub const RTLD_CONFGEN: ::c_int = 0x10000;
9671014

1015+
pub const PORT_SOURCE_AIO: ::c_int = 1;
1016+
pub const PORT_SOURCE_TIMER: ::c_int = 2;
1017+
pub const PORT_SOURCE_USER: ::c_int = 3;
1018+
pub const PORT_SOURCE_FD: ::c_int = 4;
1019+
pub const PORT_SOURCE_ALERT: ::c_int = 5;
1020+
pub const PORT_SOURCE_MQ: ::c_int = 6;
1021+
pub const PORT_SOURCE_FILE: ::c_int = 7;
1022+
pub const PORT_SOURCE_POSTWAIT: ::c_int = 8;
1023+
pub const PORT_SOURCE_SIGNAL: ::c_int = 9;
1024+
9681025
f! {
9691026
pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () {
9701027
let bits = mem::size_of_val(&(*set).fds_bits[0]) * 8;
@@ -1123,4 +1180,15 @@ extern {
11231180
flags: ::c_int) -> ::ssize_t;
11241181
pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int)
11251182
-> ::ssize_t;
1183+
1184+
pub fn port_create() -> ::c_int;
1185+
pub fn port_associate(port: ::c_int, source: ::c_int, object: ::uintptr_t,
1186+
events: ::c_int, user: ::uintptr_t) -> ::c_int;
1187+
pub fn port_dissociate(port: ::c_int, source: ::c_int, object: ::uintptr_t)
1188+
-> ::c_int;
1189+
pub fn port_get(port: ::c_int, pe: *mut port_event,
1190+
timeout: *const ::timespec) -> ::c_int;
1191+
pub fn port_getn(port: ::c_int, pe_list: *mut port_event, max: ::c_uint,
1192+
nget: *mut ::c_uint, timeout: *const ::timespec)
1193+
-> ::c_int;
11261194
}

0 commit comments

Comments
 (0)