Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit 717c76f

Browse files
committed
core.sys.posix.sys.types: Separate OS-specific types from C runtime types
1 parent 1fa90b9 commit 717c76f

File tree

1 file changed

+34
-171
lines changed

1 file changed

+34
-171
lines changed

src/core/sys/posix/sys/types.d

Lines changed: 34 additions & 171 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ time_t
8686
uid_t
8787
*/
8888

89-
version (CRuntime_Glibc)
89+
version (linux)
9090
{
9191
static if ( __USE_FILE_OFFSET64 )
9292
{
@@ -108,71 +108,40 @@ version (CRuntime_Glibc)
108108
alias int pid_t;
109109
//size_t (defined in core.stdc.stddef)
110110
alias c_long ssize_t;
111-
alias slong_t time_t;
112111
alias uint uid_t;
113-
}
114-
else version (CRuntime_Musl)
115-
{
116-
version (AArch64)
117-
{
118-
alias int blksize_t;
119-
alias uint nlink_t;
120-
}
121-
else version (MIPS64)
122-
{
123-
alias c_long blksize_t;
124-
alias uint nlink_t;
125-
}
126-
else version (RISCV64)
127-
{
128-
alias int blksize_t;
129-
alias uint nlink_t;
112+
113+
version (CRuntime_Musl)
114+
{
115+
/**
116+
* Musl versions before v1.2.0 (up to v1.1.24) had different
117+
* definitions for `time_t` for 32 bits.
118+
* This was changed to always be 64 bits in v1.2.0:
119+
* https://musl.libc.org/time64.html
120+
* This change was only for 32 bits system and
121+
* didn't affect 64 bits systems
122+
*
123+
* To check previous definitions, `grep` for `time_t` in `arch/`,
124+
* and the result should be (in v1.1.24):
125+
* ---
126+
* // arch/riscv64/bits/alltypes.h.in:20:TYPEDEF long time_t;
127+
* // arch/s390x/bits/alltypes.h.in:17:TYPEDEF long time_t;
128+
* // arch/sh/bits/alltypes.h.in:21:TYPEDEF long time_t;
129+
* ---
130+
*
131+
* In order to be compatible with old versions of Musl,
132+
* one can recompile druntime with `CRuntime_Musl_Pre_Time64`.
133+
*/
134+
version (D_X32)
135+
alias long time_t;
136+
else version (CRuntime_Musl_Pre_Time64)
137+
alias c_long time_t;
138+
else
139+
alias long time_t;
130140
}
131141
else
132142
{
133-
alias c_long blksize_t;
134-
alias c_ulong nlink_t;
135-
}
136-
alias long dev_t;
137-
alias long blkcnt_t;
138-
alias ulong ino_t;
139-
alias long off_t;
140-
alias int pid_t;
141-
alias uint uid_t;
142-
alias uint gid_t;
143-
144-
/**
145-
* Musl versions before v1.2.0 (up to v1.1.24) had different
146-
* definitions for `time_t` for 32 bits.
147-
* This was changed to always be 64 bits in v1.2.0:
148-
* https://musl.libc.org/time64.html
149-
* This change was only for 32 bits system and
150-
* didn't affect 64 bits systems
151-
*
152-
* To check previous definitions, `grep` for `time_t` in `arch/`,
153-
* and the result should be (in v1.1.24):
154-
* ---
155-
* // arch/riscv64/bits/alltypes.h.in:20:TYPEDEF long time_t;
156-
* // arch/s390x/bits/alltypes.h.in:17:TYPEDEF long time_t;
157-
* // arch/sh/bits/alltypes.h.in:21:TYPEDEF long time_t;
158-
* ---
159-
*
160-
* In order to be compatible with old versions of Musl,
161-
* one can recompile druntime with `CRuntime_Musl_Pre_Time64`.
162-
*/
163-
version (D_X32)
164-
alias long time_t;
165-
else version (CRuntime_Musl_Pre_Time64)
166-
alias c_long time_t;
167-
else
168-
alias long time_t;
169-
170-
alias c_long clock_t;
171-
alias c_ulong pthread_t;
172-
version (D_LP64)
173-
alias c_long ssize_t;
174-
else
175-
alias int ssize_t;
143+
alias slong_t time_t;
144+
}
176145
}
177146
else version (Darwin)
178147
{
@@ -311,67 +280,6 @@ else version (Solaris)
311280
alias c_long time_t;
312281
alias uint uid_t;
313282
}
314-
else version (CRuntime_Bionic)
315-
{
316-
alias c_ulong blkcnt_t;
317-
alias c_ulong blksize_t;
318-
alias size_t dev_t;
319-
alias uint gid_t;
320-
alias c_ulong ino_t;
321-
alias c_long off_t;
322-
alias int pid_t;
323-
alias c_long ssize_t;
324-
alias c_long time_t;
325-
alias uint uid_t;
326-
327-
version (D_LP64)
328-
{
329-
alias uint mode_t;
330-
alias uint nlink_t;
331-
}
332-
else
333-
{
334-
alias ushort mode_t;
335-
alias ushort nlink_t;
336-
}
337-
}
338-
else version (CRuntime_UClibc)
339-
{
340-
static if ( __USE_FILE_OFFSET64 )
341-
{
342-
alias long blkcnt_t;
343-
alias ulong ino_t;
344-
alias long off_t;
345-
}
346-
else
347-
{
348-
alias slong_t blkcnt_t;
349-
alias ulong_t ino_t;
350-
alias slong_t off_t;
351-
}
352-
353-
version (D_LP64)
354-
{
355-
alias ino_t ino64_t;
356-
alias off_t off64_t;
357-
}
358-
else
359-
{
360-
alias ulong ino64_t;
361-
alias long off64_t;
362-
}
363-
364-
alias slong_t blksize_t;
365-
alias c_ulong dev_t;
366-
alias uint gid_t;
367-
alias uint mode_t;
368-
alias uint nlink_t;
369-
alias int pid_t;
370-
//size_t (defined in core.stdc.stddef)
371-
alias c_long ssize_t;
372-
alias slong_t time_t;
373-
alias uint uid_t;
374-
}
375283
else
376284
{
377285
static assert(false, "Unsupported platform");
@@ -390,7 +298,7 @@ suseconds_t
390298
useconds_t
391299
*/
392300

393-
version (CRuntime_Glibc)
301+
version (linux)
394302
{
395303
static if ( __USE_FILE_OFFSET64 )
396304
{
@@ -483,53 +391,6 @@ else version (Solaris)
483391
alias id_t zoneid_t;
484392
alias id_t ctid_t;
485393
}
486-
else version (CRuntime_Bionic)
487-
{
488-
alias c_ulong fsblkcnt_t;
489-
alias c_ulong fsfilcnt_t;
490-
alias c_long clock_t;
491-
alias uint id_t;
492-
alias int key_t;
493-
alias c_long suseconds_t;
494-
alias uint useconds_t; // Updated in Lollipop
495-
}
496-
else version (CRuntime_Musl)
497-
{
498-
static if ( __USE_FILE_OFFSET64 )
499-
{
500-
alias ulong fsblkcnt_t;
501-
alias ulong fsfilcnt_t;
502-
}
503-
else
504-
{
505-
alias ulong_t fsblkcnt_t;
506-
alias ulong_t fsfilcnt_t;
507-
}
508-
alias uint mode_t;
509-
alias uint id_t;
510-
version (D_X32)
511-
alias long susseconds_t;
512-
else
513-
alias c_long suseconds_t;
514-
}
515-
else version (CRuntime_UClibc)
516-
{
517-
static if ( __USE_FILE_OFFSET64 )
518-
{
519-
alias ulong fsblkcnt_t;
520-
alias ulong fsfilcnt_t;
521-
}
522-
else
523-
{
524-
alias ulong_t fsblkcnt_t;
525-
alias ulong_t fsfilcnt_t;
526-
}
527-
alias slong_t clock_t;
528-
alias uint id_t;
529-
alias int key_t;
530-
alias slong_t suseconds_t;
531-
alias uint useconds_t;
532-
}
533394
else
534395
{
535396
static assert(false, "Unsupported platform");
@@ -896,6 +757,8 @@ else version (CRuntime_Musl)
896757
}
897758

898759
alias int pthread_once_t;
760+
761+
alias c_ulong pthread_t;
899762
}
900763
else version (Darwin)
901764
{

0 commit comments

Comments
 (0)