Graduate some clock_gettime() constants to #define

- CLOCK_THREAD_CPUTIME_ID
- CLOCK_PROCESS_CPUTIME_ID

Cosmo now supports the above constants universally across supported OSes
therefore it's now safe to let programs detect their presence w/ #ifdefs
This commit is contained in:
Justine Tunney 2024-07-22 07:14:35 -07:00
parent c83ec5fdd9
commit 3de6632be6
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
4 changed files with 8 additions and 7 deletions

View file

@ -402,8 +402,8 @@ arises in the fact that our Linux-flavored GCC and Clang toolchains
producing TLS instructions that use the %fs convention. producing TLS instructions that use the %fs convention.
To solve these challenges, the `cosmocc` compiler will rewrite binary To solve these challenges, the `cosmocc` compiler will rewrite binary
objects after they've been compiled by GCC, so that `%gs` register is objects after they've been compiled by GCC, so that the `%gs` register
used, rather than `%fs`. Morphing x86-64 binaries after they've been is used, rather than `%fs`. Morphing x86-64 binaries after they've been
compiled is normally difficult, due to the complexity of the machine compiled is normally difficult, due to the complexity of the machine
instruction language. However GCC provides `-mno-tls-direct-seg-refs` instruction language. However GCC provides `-mno-tls-direct-seg-refs`
which greatly reduces the complexity of this task. This flag forgoes which greatly reduces the complexity of this task. This flag forgoes

View file

@ -24,7 +24,6 @@
* Thunks free() if it's linked, otherwise do nothing. * Thunks free() if it's linked, otherwise do nothing.
*/ */
void _weakfree(void *p) { void _weakfree(void *p) {
if (_weaken(free)) { if (_weaken(free))
_weaken(free)(p); _weaken(free)(p);
}
} }

View file

@ -24,7 +24,9 @@ extern const int CLOCK_UPTIME_PRECISE;
COSMOPOLITAN_C_END_ COSMOPOLITAN_C_END_
#define CLOCK_REALTIME 0 #define CLOCK_REALTIME 0
#define CLOCK_MONOTONIC CLOCK_MONOTONIC #define CLOCK_MONOTONIC CLOCK_MONOTONIC
#define CLOCK_PROCESS_CPUTIME_ID CLOCK_PROCESS_CPUTIME_ID
#define CLOCK_THREAD_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_CLOCK_H_ */ #endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_CLOCK_H_ */

View file

@ -118,7 +118,7 @@ void _pthread_decimate(bool annihilation_only) {
if (status != kPosixThreadZombie) if (status != kPosixThreadZombie)
break; // zombies only exist at the end of the linked list break; // zombies only exist at the end of the linked list
if (atomic_load_explicit(&pt->tib->tib_tid, memory_order_acquire)) if (atomic_load_explicit(&pt->tib->tib_tid, memory_order_acquire))
continue; // undead thread should that'll stop existing soon continue; // undead thread that should stop existing soon
dll_remove(&_pthread_list, e); dll_remove(&_pthread_list, e);
dll_make_first(&list, e); dll_make_first(&list, e);
} }