ObjFW  History of src/threading.h of a6e2eea3b581000a

History of the file that is called src/threading.h at check-in a6e2eea3b581000a

2019-08-01
20:14
Deleted: Split threading.[hm] into multiple files

This allows the runtime to only link against the parts it needs, without
pulling in unnecessary parts like thread spawning, TLS and conditions. (check-in: [5358e9ea6a] user: js, branch: trunk, size: 0)

2019-07-28
12:32
[3939aad58d] part of check-in [b5430ac44f] OFThread: Don't require of_thread_exit()

Some systems do not provide the functionality. (check-in: [b5430ac44f] user: js, branch: trunk, size: 6042) [annotate] [blame] [check-ins using] [diff]

2019-02-17
22:16
[dfd5b7db22] part of check-in [4c5f686a52] OFWindowsRegistryKey: Add write support (check-in: [4c5f686a52] user: js, branch: trunk, size: 6094) [annotate] [blame] [check-ins using] [diff]
2019-01-03
19:13
[005e79a6d9] part of check-in [0509d7a844] Update copyright (check-in: [0509d7a844] user: js, branch: trunk, size: 6315) [annotate] [blame] [check-ins using] [diff]
2018-01-03
19:49
[cb3a255f3c] part of check-in [7e5c81e186] Update copyright notice (check-in: [7e5c81e186] user: js, branch: trunk, size: 6309) [annotate] [blame] [check-ins using] [diff]
2017-10-07
10:46
[46db014c33] part of check-in [1494d3f6f1] OFThread: Fix setting the name on the wrong thread

The name of the thread may only be set from the thread itself. So the
thread should read the property on start and set its name. (check-in: [1494d3f6f1] user: js, branch: trunk, size: 6286) [annotate] [blame] [check-ins using] [diff]

2017-05-16
22:58
[44065a1e75] part of check-in [510158d026] threading.h: Remove unconditional sched.h include (check-in: [510158d026] user: js, branch: trunk, size: 6306) [annotate] [blame] [check-ins using] [diff]
2017-05-14
14:18
[e37b27b008] part of check-in [c5b3c8ea87] Add nullability annotations to remaining headers

This explicitly excludes threading.h, as adding nullability annotations
requires adding them everywhere in the file. However, the types in there
are implementation defined, and might be pointers or not: Adding none
when it's a pointer would be an error, and adding one when it's not a
pointer would be an error, too. (check-in: [c5b3c8ea87] user: js, branch: trunk, size: 6326) [annotate] [blame] [check-ins using] [diff]

2017-05-07
20:10
[f3dd04ca64] part of check-in [4af49a13c3] Small code style change

Casts are now written like types in variable declarations. (check-in: [4af49a13c3] user: js, branch: trunk, size: 6290) [annotate] [blame] [check-ins using] [diff]

2017-04-13
13:19
[774a47eec4] part of check-in [48ffea9a9a] Clean up memory barriers (check-in: [48ffea9a9a] user: js, branch: trunk, size: 6288) [annotate] [blame] [check-ins using] [diff]
2017-01-09
17:36
[394f138c54] part of check-in [44f45c2e35] Update copyright

Forgot to add 2017, even though I already did quite some changes in
2017. (check-in: [44f45c2e35] user: js, branch: trunk, size: 6283) [annotate] [blame] [check-ins using] [diff]

2016-07-31
21:54
[91e8883d41] part of check-in [24796a2dc1] Add of_memory_barrier_{producer,consumer}()

Also changes the naming slightly (leave -> exit). This is more similar
to the membar_*() API NetBSD and OpenBSD provides. (check-in: [24796a2dc1] user: js, branch: trunk, size: 6277) [annotate] [blame] [check-ins using] [diff]

2016-07-30
21:22
[8449195015] part of check-in [8e7c6ddf8c] of_spinlock_(un)lock: Add memory barrier (check-in: [8e7c6ddf8c] user: js, branch: trunk, size: 6278) [annotate] [blame] [check-ins using] [diff]
2016-04-24
15:31
[f81dcfe3c4] part of check-in [4b31620e27] Move of_tlskey_{new,free} to API-specific files (check-in: [4b31620e27] user: js, branch: trunk, size: 6169) [annotate] [blame] [check-ins using] [diff]
2016-04-18
21:48
[adb5774a4e] part of check-in [fa79bc173e] Add of_thread_yield() (check-in: [fa79bc173e] user: js, branch: trunk, size: 6540) [annotate] [blame] [check-ins using] [diff]
21:40
[b27d0410b9] part of check-in [3f31bd034d] Move of_once() to threading.m (check-in: [3f31bd034d] user: js, branch: trunk, size: 6557) [annotate] [blame] [check-ins using] [diff]
2016-03-28
23:43
[ab485ea64f] part of check-in [543eb96c02] Style consistency changes

Multiline preprocessor directives now always indent the continued lines
by 4 spaces. The only exception are defines that define to code blocks:
Those are still indented by a tab in order to align with the rest of the
code. (check-in: [543eb96c02] user: js, branch: trunk, size: 6558) [annotate] [blame] [check-ins using] [diff]

2016-03-12
16:30
[0e441a08b1] part of check-in [1664de811f] Don't require C99 in public headers

Using C99 in public headers would require users of ObjFW to compile
everything with -std=c99. (check-in: [1664de811f] user: js, branch: trunk, size: 6555) [annotate] [blame] [check-ins using] [diff]

2016-02-21
15:37
[2fb0666be8] part of check-in [e0b9167693] Make use of C99-style for loops (check-in: [e0b9167693] user: js, branch: trunk, size: 6550) [annotate] [blame] [check-ins using] [diff]
2016-01-03
00:43
[cdc77ff76d] part of check-in [cec0f072f8] Update copyright

While at it, also update the mail address. (check-in: [cec0f072f8] user: js, branch: 0.8, size: 6488) [annotate] [blame] [check-ins using] [diff]

00:41
[3ce1164040] part of check-in [2a27cf3000] Update copyright

While at it, also update the mail address. (check-in: [2a27cf3000] user: js, branch: trunk, size: 6552) [annotate] [blame] [check-ins using] [diff]

2015-10-19
22:15
[ddfe6e7a81] part of check-in [1ba08eebc5] Add platform.h & make platform defines consistent (check-in: [1ba08eebc5] user: js, branch: trunk, size: 6548) [annotate] [blame] [check-ins using] [diff]
2015-03-30
21:33
[9b92c5e911] part of check-in [ffb39d1df6] Add OF_NO_RETURN_FUNC

OF_NO_RETURN_FUNC is defined when __attribute__((__noreturn__)) is
supported for functions, whereas OF_NO_RETURN is only defined when it is
supported for both functions and methods. (check-in: [ffb39d1df6] user: js, branch: trunk, size: 6484) [annotate] [blame] [check-ins using] [diff]

2015-01-03
20:57
[2d831b6bc8] part of check-in [cfd374b906] Update copyright (check-in: [cfd374b906] user: js, branch: trunk, size: 6479) [annotate] [blame] [check-ins using] [diff]
2014-10-04
19:24
[a8b345125c] part of check-in [be99da0c09] threading: WinAPI's CriticalSection is recursive

No need to manually implement recursiveness for WinAPI. (check-in: [be99da0c09] user: js, branch: trunk, size: 6473) [annotate] [blame] [check-ins using] [diff]

2014-08-01
12:27
[7cf05d0077] part of check-in [52e02c06ca] Change return type for thread main

This changes the return type to void, as the return type of a thread's
main depends on the threading implementation used. For pthreads, it adds
a wrapper function which returns NULL to avoid problems with bogus
return values. For WinAPI threads, the function is just casted, as bogus
return values don't seem to matter there. (check-in: [52e02c06ca] user: js, branch: trunk, size: 6448) [annotate] [blame] [check-ins using] [diff]

2014-07-19
16:27
[0444440a9d] part of check-in [c4f724070a] OFThread: Configurable priority and stack size (check-in: [c4f724070a] user: js, branch: trunk, size: 6444) [annotate] [blame] [check-ins using] [diff]
16:16
[ca3714aa7c] part of check-in [2c78c6570b] Add of_thread_set_name() (check-in: [2c78c6570b] user: js, branch: trunk, size: 6187) [annotate] [blame] [check-ins using] [diff]
09:55
[e7a7a55554] part of check-in [716b1fc2b3] Don't use C11's noreturn

It causes just too much trouble: It breaks with some old versions of
Clang, where noreturn does not work correctly, and OS X headers break if
noreturn is defined, requiring an ugly and fragile workaround. It's just
not worth the trouble it causes, as the same functionality is available
through __attribute__((__noreturn__)). (check-in: [716b1fc2b3] user: js, branch: trunk, size: 6117) [annotate] [blame] [check-ins using] [diff]

2014-07-18
10:47
[25e6067bdf] part of check-in [1da2e596af] Split threading.h into threading.m and threading.h (check-in: [1da2e596af] user: js, branch: trunk, size: 6113) [annotate] [blame] [check-ins using] [diff]
2014-07-16
15:16
[90da9579d7] part of check-in [ff23684e9d] Coding style (check-in: [ff23684e9d] user: js, branch: trunk, size: 12459) [annotate] [blame] [check-ins using] [diff]
2014-06-21
21:43
[c4677d1bcf] part of check-in [13ee56edf3] Move all macros from OFObject.h to macros.h

This means that OFObject.h imports macros.h now, making it unnecessary
to manually import macros.h in almost every file. And while at it, also
import autorelease.h in OFObject.h, so that this doesn't need to be
manually imported in almost every file as well. (check-in: [13ee56edf3] user: js, branch: trunk, size: 12416) [annotate] [blame] [check-ins using] [diff]

2014-05-14
20:45
[65cc15f272] part of check-in [bac91ccede] Add C11 noreturn

If it's unavailable, it's defined to __attribute__((noreturn)).

Unfortunately, it cannot be used for ObjC methods, as noreturn is part
of the return type while __attribute__((noreturn)) needs to be at the
end for an ObjC method. To make matters worse, even GCC versions that
accept noreturn don't allow it for an ObjC method. Thus, the only thing
that can be done is to always use __attribute__((noreturn)) for ObjC
methods using the OF_METHOD_NORETURN define. (check-in: [bac91ccede] user: js, branch: trunk, size: 12436) [annotate] [blame] [check-ins using] [diff]

2014-05-05
02:43
[79cb0c24fe] part of check-in [b885b6fdfa] Add OF_NO_RETURN and OF_UNREACHABLE (check-in: [b885b6fdfa] user: js, branch: trunk, size: 12424) [annotate] [blame] [check-ins using] [diff]
01:08
[a65488fd6f] part of check-in [a92844520a] Improve atomics API (check-in: [a92844520a] user: js, branch: trunk, size: 12411) [annotate] [blame] [check-ins using] [diff]
2014-02-28
00:38
[1628bdd768] part of check-in [ba5e756264] threading.h: Add of_once() (check-in: [ba5e756264] user: js, branch: trunk, size: 12411) [annotate] [blame] [check-ins using] [diff]
2014-02-12
03:17
[682651858d] part of check-in [6ba4095f05] Fix compilation with mingw-w64 (check-in: [6ba4095f05] user: js, branch: trunk, size: 11904) [annotate] [blame] [check-ins using] [diff]
2014-01-31
13:33
[23ee43131c] part of check-in [0a8dca300b] Make sure there's always an #else in abstractions (check-in: [0a8dca300b] user: js, branch: trunk, size: 11683) [annotate] [blame] [check-ins using] [diff]
2014-01-16
23:09
[7bbaf6acd2] part of check-in [dc31ce3d34] Add of_time_interval_t.

This is used instead for time intervals now instead of doubles. (check-in: [dc31ce3d34] user: js, branch: trunk, size: 10654) [annotate] [blame] [check-ins using] [diff]

2014-01-04
00:24
[60a577e8c2] part of check-in [3b97fc3cd9] Update copyright. (check-in: [3b97fc3cd9] user: js, branch: trunk, size: 10620) [annotate] [blame] [check-ins using] [diff]
2013-09-17
14:14
[e8db192b1b] part of check-in [2ac6cc1247] Only compare with PTHREAD_CANCELED if defined. (check-in: [2ac6cc1247] user: js, branch: trunk, size: 10614) [annotate] [blame] [check-ins using] [diff]
2013-05-13
16:12
[e79bb60b2e] part of check-in [3e91cf6cef] Get rid of a type warning on win32. (check-in: [3e91cf6cef] user: js, branch: trunk, size: 10560) [annotate] [blame] [check-ins using] [diff]
2013-04-30
22:29
[165753d14b] part of check-in [e139086f33] threading.h: Add of_condition_timed_wait(). (check-in: [e139086f33] user: js, branch: trunk, size: 10563) [annotate] [blame] [check-ins using] [diff]
2013-03-14
19:25
[49f79a338f] part of check-in [27138ee85b] Add a few memory barriers. (check-in: [27138ee85b] user: js, branch: trunk, size: 9888) [annotate] [blame] [check-ins using] [diff]
2013-03-04
17:20
[c5163894df] part of check-in [c5ef582958] Replace BOOL with bool.

The only places where BOOL is left are those where they are required by
the ABI. (check-in: [c5ef582958] user: js, branch: trunk, size: 9871) [annotate] [blame] [check-ins using] [diff]

2013-01-12
20:53
[ba948db4c9] part of check-in [b8ce2359f3] Clean up the feature #ifdef mess. (check-in: [b8ce2359f3] user: js, branch: trunk, size: 9770) [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
[f6862f572a] part of check-in [813c00ccf0] Update copyright. (check-in: [813c00ccf0] user: js, branch: trunk, size: 9729) [annotate] [blame] [check-ins using] [diff]
2012-08-19
21:27
[250a513bc4] part of check-in [43e45e2364] Don't use main as variable name. (check-in: [43e45e2364] user: js, branch: trunk, size: 9723) [annotate] [blame] [check-ins using] [diff]
21:27
[e7e86967b9] part of check-in [bab9dd49fe] Add more ARC type qualifiers. (check-in: [bab9dd49fe] user: js, branch: trunk, size: 9711) [annotate] [blame] [check-ins using] [diff]
2012-08-05
17:34
[a1aae6b58b] part of check-in [6069030651] Add OFRecursiveMutex class. (check-in: [6069030651] user: js, branch: trunk, size: 9693) [annotate] [blame] [check-ins using] [diff]
17:22
[aa1078d8fa] part of check-in [1e10b33066] Use recursive pthread mutexes if available. (check-in: [1e10b33066] user: js, branch: trunk, size: 9248) [annotate] [blame] [check-ins using] [diff]
10:45
[f15e1e67ea] part of check-in [1cb3d9fef9] Add of_rmutex_t, a reentrant mutex implementation. (check-in: [1cb3d9fef9] user: js, branch: trunk, size: 8655) [annotate] [blame] [check-ins using] [diff]
2012-07-14
20:38
[47f623ac86] part of check-in [e379516a39] Let of_tlskey_* use void* instead of id. (check-in: [e379516a39] user: js, branch: trunk, size: 7475) [annotate] [blame] [check-ins using] [diff]
2012-01-05
00:56
[3fbabbb84b] part of check-in [ce70e17b38] Update copyright. (check-in: [ce70e17b38] user: js, branch: trunk, size: 7618) [annotate] [blame] [check-ins using] [diff]
2011-10-22
16:14
[c9df66742a] part of check-in [376cff4c0b] Define of_thread_current without the ().
This way, it's possible to get a pointer to the actual function.
(check-in: [376cff4c0b] user: js, branch: trunk, size: 7612) [annotate] [blame] [check-ins using] [diff]
2011-05-29
21:47
[e3a63de0b8] part of check-in [a1c5b19c7c] Inline of_condition_* on Win32 as well to prevent warnings. (check-in: [a1c5b19c7c] user: js, branch: trunk, size: 7620) [annotate] [blame] [check-ins using] [diff]
2011-04-23
00:11
[ffa37b7f10] part of check-in [d8c31454b4] More style improvements. (check-in: [d8c31454b4] user: js, branch: trunk, size: 7833) [annotate] [blame] [check-ins using] [diff]
2011-04-21
11:19
[ed61fa08de] part of check-in [e1b8152dd9] Merge a few changes from default branch to 0.5 branch.

Changesets:
* 8a0cee0e7fb2
* e9f5dda18648
* 38b1ce72bd0b
* c09dc6f82884
* e193cd04a3df (check-in: [e1b8152dd9] user: js, branch: 0.5, size: 7802) [annotate] [blame] [check-ins using] [diff]

2011-04-12
14:51
[c1d87def31] part of check-in [c02e48e140] Use void in declarations when we take no parameters. (check-in: [c02e48e140] user: js, branch: trunk, size: 7680) [annotate] [blame] [check-ins using] [diff]
12:43
[d7813d4c61] part of check-in [70b77b9b3a] Detach threads when we never joined them. (check-in: [70b77b9b3a] user: js, branch: trunk, size: 7676) [annotate] [blame] [check-ins using] [diff]
2011-04-11
00:37
[b5ecf36784] part of check-in [e52ccc8d45] A few readability improvements. (check-in: [e52ccc8d45] user: js, branch: trunk, size: 7494) [annotate] [blame] [check-ins using] [diff]
2011-03-17
20:33
[ad9f8119e0] part of check-in [eb827e8f21] Use Sleep(0) instead of yield() on Win32. (check-in: [eb827e8f21] user: js, branch: trunk, size: 7620) [annotate] [blame] [check-ins using] [diff]
2011-03-11
12:15
[33ef5dc30b] part of check-in [b5e6a49dca] Implement conditions for win32. (check-in: [b5e6a49dca] user: js, branch: trunk, size: 7549) [annotate] [blame] [check-ins using] [diff]
2011-03-07
15:39
[0b981f818f] part of check-in [f771ddda2d] Add abstraction for conditions.

No support for Win32 yet, as we will need our own implementation of
conditions there. (check-in: [f771ddda2d] user: js, branch: trunk, size: 6861) [annotate] [blame] [check-ins using] [diff]

2011-01-01
20:19
[f35468bbe4] part of check-in [da6b3d26cb] Change license. (check-in: [da6b3d26cb] user: js, branch: trunk, size: 5824) [annotate] [blame] [check-ins using] [diff]
2010-12-28
22:18
[024109a4fb] part of check-in [88c920bd62] Make ObjFW work again without threads and without atomic ops. (check-in: [88c920bd62] user: js, branch: trunk, size: 5568) [annotate] [blame] [check-ins using] [diff]
2010-11-06
11:40
[707f139f43] part of check-in [1edd5313ae] Improve spinlock implementation. (check-in: [1edd5313ae] user: js, branch: trunk, size: 5544) [annotate] [blame] [check-ins using] [diff]
2010-06-27
12:21
[1fc17ada35] part of check-in [e45069a556] Fix a wrong typedef in threading.h. (check-in: [e45069a556] user: js, branch: trunk, size: 5413) [annotate] [blame] [check-ins using] [diff]
2010-04-10
21:29
[49e86ee69a] part of check-in [ea96fd1e24] Greatly improve OFThread.
This fixes a lot of issues that happened in the real world.
(check-in: [ea96fd1e24] user: js, branch: trunk, size: 5418) [annotate] [blame] [check-ins using] [diff]
2010-03-05
11:52
[0b6953b2d5] part of check-in [b91a8283fe] Merge a few changesets from the default branch into the 0.2 branch.

Changesets:
* b95fcaa6d694
* 804c68d222b4
* da8cd738da3d
* 1109d5ce3419
* d03f5c1ca95d
* 2a7017722165
* 4fccdc79eeb7
* d228149fbc04
* 8782d412a4a6 (check-in: [b91a8283fe] user: js, branch: 0.2, size: 5555) [annotate] [blame] [check-ins using] [diff]

2010-02-19
16:36
[ce91e6e1f3] part of check-in [42886185fd] Update copyright. (check-in: [42886185fd] user: js, branch: trunk, size: 5555) [annotate] [blame] [check-ins using] [diff]
2010-02-05
14:03
[d98a519a69] part of check-in [4e1ab53403] Rename of_atomic_*32 to of_atomic_*_32 and add of_atomic_cmpswap_ptr. (check-in: [4e1ab53403] user: js, branch: trunk, size: 5555) [annotate] [blame] [check-ins using] [diff]
2010-02-02
18:58
[f03917fe6f] part of check-in [832188d759] Rename OFMacros.h to macros.h, as it's not a class. (check-in: [832188d759] user: js, branch: trunk, size: 5553) [annotate] [blame] [check-ins using] [diff]
2010-02-01
14:20
[bf0ea6d5c4] part of check-in [cb6e353487] More secure way to unlock spinlocks. (check-in: [cb6e353487] user: js, branch: trunk, size: 5555) [annotate] [blame] [check-ins using] [diff]
2010-01-31
22:05
[b78d28aec0] part of check-in [305317e5ea] Small optimization. (check-in: [305317e5ea] user: js, branch: trunk, size: 5529) [annotate] [blame] [check-ins using] [diff]
2010-01-30
14:14
[ec6d801a5e] part of check-in [35f59c61c6] Fix missing includes and typos. (check-in: [35f59c61c6] user: js, branch: trunk, size: 5526) [annotate] [blame] [check-ins using] [diff]
02:09
[27e884cfec] part of check-in [839f45a293] Replace some macros with OF_INLINE functions.
This way, there won't be a warning about unused results.
(check-in: [839f45a293] user: js, branch: trunk, size: 5525) [annotate] [blame] [check-ins using] [diff]
01:17
[f8a41f877f] part of check-in [921b158d17] Change spinlock implementation, add fallbacks and move to threading.h. (check-in: [921b158d17] user: js, branch: trunk, size: 5154) [annotate] [blame] [check-ins using] [diff]
00:50
[118d170b8a] part of check-in [20e1c0e24b] Add -[tryLock] to OFMutex. (check-in: [20e1c0e24b] user: js, branch: trunk, size: 4020) [annotate] [blame] [check-ins using] [diff]
2010-01-29
19:29
[d9ecd3df92] part of check-in [d08376bc1f] Introduce OF_HAVE_PTHREADS define instead of #ifndef _WIN32. (check-in: [d08376bc1f] user: js, branch: trunk, size: 3794) [annotate] [blame] [check-ins using] [diff]
2009-12-09
18:43
[0ccf73f4cd] part of check-in [66f6ca045c] Indent defines and imports where it is useful. (check-in: [66f6ca045c] user: js, branch: trunk, size: 3277) [annotate] [blame] [check-ins using] [diff]
2009-11-14
12:17
[04a0546353] part of check-in [12101c192f] New solution for TLS key destructors that works on any OS. (check-in: [12101c192f] user: js, branch: trunk, size: 3273) [annotate] [blame] [check-ins using] [diff]
2009-11-13
18:53
[44dc680850] part of check-in [f1637e9310] Resolve more FIXMEs. (check-in: [f1637e9310] user: js, branch: trunk, size: 3349) [annotate] [blame] [check-ins using] [diff]
2009-11-09
22:45
[7b407a5ba1] part of check-in [a3cc34b139] Rename libobjfw to ObjFW. (check-in: [a3cc34b139] user: js, branch: trunk, size: 3230) [annotate] [blame] [check-ins using] [diff]
2009-09-21
20:35
[6c98cd6b3a] part of check-in [59969f5450] A few minor Win32 fixes. (check-in: [59969f5450] user: js, branch: trunk, size: 3233) [annotate] [blame] [check-ins using] [diff]
11:15
Added: [fc8a803188] part of check-in [15a67e8ee5] Move platform-specific threading stuff to threading.h. (check-in: [15a67e8ee5] user: js, branch: trunk, size: 3230) [annotate] [blame] [check-ins using]