<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/tools/include/nolibc, branch master</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=master</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2026-01-11T11:47:47Z</updated>
<entry>
<title>tools/nolibc: Add fseek() to stdio.h</title>
<updated>2026-01-11T11:47:47Z</updated>
<author>
<name>Daniel Palmer</name>
<email>daniel@thingy.jp</email>
</author>
<published>2026-01-05T02:36:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=109770cc81680b802ee983b09b61c3979240fd09'/>
<id>urn:sha1:109770cc81680b802ee983b09b61c3979240fd09</id>
<content type='text'>
A very basic wrapper around lseek() that implements fseek().

Signed-off-by: Daniel Palmer &lt;daniel@thingy.jp&gt;
Link: https://patch.msgid.link/20260105023629.1502801-3-daniel@thingy.jp
Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
</content>
</entry>
<entry>
<title>tools/nolibc: Add fread() to stdio.h</title>
<updated>2026-01-11T11:47:47Z</updated>
<author>
<name>Daniel Palmer</name>
<email>daniel@thingy.jp</email>
</author>
<published>2026-01-05T02:36:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=edaf30743185f6ed8e29dcb2f1d01e183c0b807b'/>
<id>urn:sha1:edaf30743185f6ed8e29dcb2f1d01e183c0b807b</id>
<content type='text'>
Add a very basic version of fread() like we already have for fwrite().

Signed-off-by: Daniel Palmer &lt;daniel@thingy.jp&gt;
Link: https://patch.msgid.link/20260105023629.1502801-2-daniel@thingy.jp
Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
</content>
</entry>
<entry>
<title>tools/nolibc: align sys_vfork() with sys_fork()</title>
<updated>2026-01-06T11:08:10Z</updated>
<author>
<name>Thomas Weißschuh</name>
<email>linux@weissschuh.net</email>
</author>
<published>2026-01-04T22:43:13Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=57624b38ce99b906cbb191a1d536bb871ad2d8c2'/>
<id>urn:sha1:57624b38ce99b906cbb191a1d536bb871ad2d8c2</id>
<content type='text'>
Currently the generic variants of sys_fork() and sys_vfork() differ in
both they precedence of used system calls and the usage of sys_clone()
vs sys_clone3(). While the interface of clone3() in sys_vfork() is more
consistent over different architectures, qemu-user does not support it,
making testing harder. We already handle the different clone()
interfaces for sys_fork() in the architecture-specific headers, and can
do so also for sys_vfork(). In fact SPARC already has such handling and
only s390 is currently missing.

Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
Acked-by: Willy Tarreau &lt;w@1wt.eu&gt;
Link: https://patch.msgid.link/20260104-nolibc-vfork-v1-1-a63464b9e4e6@weissschuh.net
</content>
</entry>
<entry>
<title>selftests/nolibc: add static assertions around time types handling</title>
<updated>2026-01-06T11:08:08Z</updated>
<author>
<name>Thomas Weißschuh</name>
<email>linux@weissschuh.net</email>
</author>
<published>2025-12-20T13:55:58Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=f3ed932644a671038b31f7f536a066eeef6803b0'/>
<id>urn:sha1:f3ed932644a671038b31f7f536a066eeef6803b0</id>
<content type='text'>
The nolibc system call wrappers expect the libc types to be compatible
to the kernel types.

Make sure these expectations hold at compile-time.

Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
Acked-by: Willy Tarreau &lt;w@1wt.eu&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: https://patch.msgid.link/20251220-nolibc-uapi-types-v3-14-c662992f75d7@weissschuh.net
</content>
</entry>
<entry>
<title>tools/nolibc: add __nolibc_static_assert()</title>
<updated>2026-01-06T11:08:08Z</updated>
<author>
<name>Thomas Weißschuh</name>
<email>linux@weissschuh.net</email>
</author>
<published>2025-12-20T13:55:57Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=37219aa5b12326cd60f4586779c687f3394e80f5'/>
<id>urn:sha1:37219aa5b12326cd60f4586779c687f3394e80f5</id>
<content type='text'>
Add a wrapper for _Static_assert() to use within nolibc.
While _Static_assert() itself was only standardized in C11,
in GCC and clang dialects it is also available in older standards.

Link: https://lore.kernel.org/lkml/20251203192330.GA12995@1wt.eu/
Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
Acked-by: Willy Tarreau &lt;w@1wt.eu&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: https://patch.msgid.link/20251220-nolibc-uapi-types-v3-13-c662992f75d7@weissschuh.net
</content>
</entry>
<entry>
<title>tools/nolibc: add compiler version detection macros</title>
<updated>2026-01-06T11:08:07Z</updated>
<author>
<name>Thomas Weißschuh</name>
<email>linux@weissschuh.net</email>
</author>
<published>2025-12-20T13:55:56Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=dd6659efe0529e7177e9270a0fc044a0b17deb8a'/>
<id>urn:sha1:dd6659efe0529e7177e9270a0fc044a0b17deb8a</id>
<content type='text'>
Some upcoming logic needs to depend on the version of GCC or clang.

Add some helper macros to keep the conditionals readable.

Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
Acked-by: Willy Tarreau &lt;w@1wt.eu&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: https://patch.msgid.link/20251220-nolibc-uapi-types-v3-12-c662992f75d7@weissschuh.net
</content>
</entry>
<entry>
<title>tools/nolibc: remove time conversions</title>
<updated>2026-01-06T11:08:06Z</updated>
<author>
<name>Thomas Weißschuh</name>
<email>linux@weissschuh.net</email>
</author>
<published>2025-12-20T13:55:55Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=6c9be90527207f9beca78e698dd45969813f4c0e'/>
<id>urn:sha1:6c9be90527207f9beca78e698dd45969813f4c0e</id>
<content type='text'>
Now that 'struct timespec' and 'struct __kernel_timespec' are
compatible, the conversions are not necessary anymore.
The same holds true for 'struct itimerspec' and 'struct
__kernel_itimerspec'.

Remove the conversions.

Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
Acked-by: Willy Tarreau &lt;w@1wt.eu&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: https://patch.msgid.link/20251220-nolibc-uapi-types-v3-11-c662992f75d7@weissschuh.net
</content>
</entry>
<entry>
<title>tools/nolibc: always use 64-bit time types</title>
<updated>2026-01-04T09:29:03Z</updated>
<author>
<name>Thomas Weißschuh</name>
<email>linux@weissschuh.net</email>
</author>
<published>2025-12-20T13:55:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=bdcfc417f26ffd1a7e214d1cce78500dc4dbc2d5'/>
<id>urn:sha1:bdcfc417f26ffd1a7e214d1cce78500dc4dbc2d5</id>
<content type='text'>
32-bit time types will stop working in 2038.

Switch to 64-bit time types everywhere.

Suggested-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: https://lore.kernel.org/lkml/cec27d94-c99d-4c57-9a12-275ea663dda8@app.fastmail.com/
Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
Acked-by: Willy Tarreau &lt;w@1wt.eu&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: https://patch.msgid.link/20251220-nolibc-uapi-types-v3-9-c662992f75d7@weissschuh.net
</content>
</entry>
<entry>
<title>tools/nolibc: use custom structs timespec and timeval</title>
<updated>2026-01-04T09:29:02Z</updated>
<author>
<name>Thomas Weißschuh</name>
<email>linux@weissschuh.net</email>
</author>
<published>2025-12-20T13:55:52Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=f5aa863aea6c1ec20b85cc0b0a22e99597f0cb50'/>
<id>urn:sha1:f5aa863aea6c1ec20b85cc0b0a22e99597f0cb50</id>
<content type='text'>
A custom 'struct timespec' and 'struct timeval' will be necessary for
64-bit time types on 32-bit architectures. &lt;linux/time.h&gt; will define
other time-related types in terms of the custom 'struct timespec'.

Add custom struct definitions which for now mirror exactly the ones from
the UAPI headers, but provide the foundation for further changes.

Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
Acked-by: Willy Tarreau &lt;w@1wt.eu&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: https://patch.msgid.link/20251220-nolibc-uapi-types-v3-8-c662992f75d7@weissschuh.net
</content>
</entry>
<entry>
<title>tools/nolibc/select: avoid libgcc 64-bit multiplications</title>
<updated>2026-01-04T09:29:02Z</updated>
<author>
<name>Thomas Weißschuh</name>
<email>linux@weissschuh.net</email>
</author>
<published>2025-12-20T13:55:51Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=47c17d97681d9c5d080acfdb273fa0856c930e74'/>
<id>urn:sha1:47c17d97681d9c5d080acfdb273fa0856c930e74</id>
<content type='text'>
timeval::tv_usec is going to be 64-bit wide even on 32-bit
architectures. As not all architectures support 64-bit multiplications
instructions, calls to libgcc (__multi3()) may be emitted by the
compiler which are not provided by nolibc.

As tv_usec and tv_nsec are guaranteed to always fit into an uint32_t,
perform a 32-bit multiplication instead.

Signed-off-by: Thomas Weißschuh &lt;linux@weissschuh.net&gt;
Acked-by: Willy Tarreau &lt;w@1wt.eu&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: https://patch.msgid.link/20251220-nolibc-uapi-types-v3-7-c662992f75d7@weissschuh.net
</content>
</entry>
</feed>
