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.
To solve these challenges, the `cosmocc` compiler will rewrite binary
objects after they've been compiled by GCC, so that `%gs` register is
used, rather than `%fs`. Morphing x86-64 binaries after they've been
objects after they've been compiled by GCC, so that the `%gs` register
is used, rather than `%fs`. Morphing x86-64 binaries after they've been
compiled is normally difficult, due to the complexity of the machine
instruction language. However GCC provides `-mno-tls-direct-seg-refs`
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.
*/
void _weakfree(void *p) {
if (_weaken(free)) {
if (_weaken(free))
_weaken(free)(p);
}
}

View file

@ -24,7 +24,9 @@ extern const int CLOCK_UPTIME_PRECISE;
COSMOPOLITAN_C_END_
#define CLOCK_REALTIME 0
#define CLOCK_MONOTONIC CLOCK_MONOTONIC
#define CLOCK_REALTIME 0
#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_ */

View file

@ -118,7 +118,7 @@ void _pthread_decimate(bool annihilation_only) {
if (status != kPosixThreadZombie)
break; // zombies only exist at the end of the linked list
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_make_first(&list, e);
}