User Level Synchronization
Gupta begins by describing what he means by ULS:
30. I will now describe the user level synchronization (ULS) routines that are used for blocking and unblocking of processes. [... REDACTED ...]
31. The ULS routines in Linux are commonly referred to as FUTEX (Fast User Mutex), but will be called Linux ULS here.
32. The ULS routines in UNIX are sometimes referred to as usync, but will be called UNIX ULS here.
33. The main purpose of the ULS routines is to facilitate inter-process synchronization by blocking and unblocking processes attempting to access shared data.
SCO's reason for adopting this strange terminology, found neither in Linux nor in any UNIX™, is not stated, but can be discovered by a close reading of the Statement of Work in the USL/Sequent MP Agreement of 1990 (497 page 26), in which item 6 is "User Level Synchronization primitives".
The subsequent Davis Declaration (235-C page 10 footnote 1) reveals the file and lines Gupta complains of:
| kernel/futex.c | 159 178 187 188-191 456 489 495 298-300 302-308 |
The file's history at LinuxHQ and examination of those line numbers shows that the relevant version is probably Linux 2.6.0 [download] [copying]. It was released on 18 December 2003. The next release was 2.6.1 on 9 January 2004. The file is certainly earlier than 2.6.5.