mirror of
https://github.com/systemd/systemd
synced 2026-03-19 03:24:45 +01:00
Compare commits
14 Commits
e4948b0f0a
...
e9bbb6ef04
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e9bbb6ef04 | ||
|
|
566c8176da | ||
|
|
2568bb1085 | ||
|
|
8156422c8f | ||
|
|
7422405623 | ||
|
|
cf2ab2e7ea | ||
|
|
39d02a175f | ||
|
|
9b682672e4 | ||
|
|
b428efa54b | ||
|
|
b2e8fdc896 | ||
|
|
0aa649b11d | ||
|
|
fc75007b32 | ||
|
|
18adce1566 | ||
|
|
d34e3b76e5 |
5
NEWS
5
NEWS
@ -165,7 +165,7 @@ CHANGES WITH 249 in spe:
|
|||||||
* In .network files a new OutgoingInterface= setting has been added to
|
* In .network files a new OutgoingInterface= setting has been added to
|
||||||
specify the output interface in bridge FDB setups.
|
specify the output interface in bridge FDB setups.
|
||||||
|
|
||||||
* In ,network files the Multipath group ID may now be configured for
|
* In .network files the Multipath group ID may now be configured for
|
||||||
[NextHop] entries, via the new Group= setting.
|
[NextHop] entries, via the new Group= setting.
|
||||||
|
|
||||||
* The DHCP server logic configured in .network files gained a new
|
* The DHCP server logic configured in .network files gained a new
|
||||||
@ -452,9 +452,6 @@ CHANGES WITH 249 in spe:
|
|||||||
time, birth time, change time, modification time) to look at when
|
time, birth time, change time, modification time) to look at when
|
||||||
deciding whether a path has aged enough to be cleaned.
|
deciding whether a path has aged enough to be cleaned.
|
||||||
|
|
||||||
* Journal files, which are allocated in fixed incremenets, are now
|
|
||||||
truncated when rotated/archived to remove unused space from their tails.
|
|
||||||
|
|
||||||
* A new IPv6StableSecretAddress= setting has been added to .network
|
* A new IPv6StableSecretAddress= setting has been added to .network
|
||||||
files, which takes an IPv6 address to use as secret for IPv6 address
|
files, which takes an IPv6 address to use as secret for IPv6 address
|
||||||
generation.
|
generation.
|
||||||
|
|||||||
4
TODO
4
TODO
@ -26,6 +26,8 @@ Janitorial Clean-ups:
|
|||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
|
||||||
|
* in sd-id128: also parse UUIDs in RFC4122 URN syntax (i.e. chop off urn:uuid: prefix)
|
||||||
|
|
||||||
* ability to insert trusted configuration and secrets into the boot parameters
|
* ability to insert trusted configuration and secrets into the boot parameters
|
||||||
of a kernel booting in a VM or on baremetal some way, via TPM
|
of a kernel booting in a VM or on baremetal some way, via TPM
|
||||||
protection. idea:
|
protection. idea:
|
||||||
@ -1029,8 +1031,6 @@ Features:
|
|||||||
here:
|
here:
|
||||||
http://blog.vmsplice.net/2020/07/rethinking-event-loop-integration-for.html
|
http://blog.vmsplice.net/2020/07/rethinking-event-loop-integration-for.html
|
||||||
|
|
||||||
* investigate endianness issues of UUID vs. GUID
|
|
||||||
|
|
||||||
* dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we
|
* dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we
|
||||||
should be able to safely try another attempt when the bus call LoadUnit() is invoked.
|
should be able to safely try another attempt when the bus call LoadUnit() is invoked.
|
||||||
|
|
||||||
|
|||||||
@ -147,15 +147,13 @@
|
|||||||
<refsect1>
|
<refsect1>
|
||||||
<title>Relation to OSF UUIDs</title>
|
<title>Relation to OSF UUIDs</title>
|
||||||
|
|
||||||
<para>Note that the machine ID historically is not an OSF UUID as
|
<para>Note that the machine ID historically is not an OSF UUID as defined by <ulink
|
||||||
defined by <ulink url="https://tools.ietf.org/html/rfc4122">RFC
|
url="https://tools.ietf.org/html/rfc4122">RFC 4122</ulink>, nor a Microsoft GUID; however, starting with
|
||||||
4122</ulink>, nor a Microsoft GUID; however, starting with systemd
|
systemd v30, newly generated machine IDs do qualify as Variant 1 Version 4 UUIDs, as per RFC 4122.</para>
|
||||||
v30, newly generated machine IDs do qualify as v4 UUIDs.</para>
|
|
||||||
|
|
||||||
<para>In order to maintain compatibility with existing
|
<para>In order to maintain compatibility with existing installations, an application requiring a strictly
|
||||||
installations, an application requiring a UUID should decode the
|
RFC 4122 compliant UUID should decode the machine ID, and then (non-reversibly) apply the following
|
||||||
machine ID, and then apply the following operations to turn it
|
operations to turn it into a valid RFC 4122 Variant 1 Version 4 UUID. With <literal>id</literal> being an
|
||||||
into a valid OSF v4 UUID. With <literal>id</literal> being an
|
|
||||||
unsigned character array:</para>
|
unsigned character array:</para>
|
||||||
|
|
||||||
<programlisting>/* Set UUID version to 4 --- truly random generation */
|
<programlisting>/* Set UUID version to 4 --- truly random generation */
|
||||||
|
|||||||
@ -50,13 +50,11 @@
|
|||||||
<refsect1>
|
<refsect1>
|
||||||
<title>Description</title>
|
<title>Description</title>
|
||||||
|
|
||||||
<para><filename>sd-id128.h</filename> provides APIs to process and
|
<para><filename>sd-id128.h</filename> provides APIs to process and generate 128-bit ID values. The
|
||||||
generate 128-bit ID values. The 128-bit ID values processed and
|
128-bit ID values processed and generated by these APIs are a generalization of OSF UUIDs as defined by
|
||||||
generated by these APIs are a generalization of OSF UUIDs as
|
<ulink url="https://tools.ietf.org/html/rfc4122">RFC 4122</ulink> but use a simpler string format. These
|
||||||
defined by <ulink url="https://tools.ietf.org/html/rfc4122">RFC
|
functions impose no structure on the used IDs, much unlike OSF UUIDs or Microsoft GUIDs, but are mostly
|
||||||
4122</ulink> but use a simpler string format. These functions
|
compatible with those types of IDs.
|
||||||
impose no structure on the used IDs, much unlike OSF UUIDs or
|
|
||||||
Microsoft GUIDs, but are fully compatible with those types of IDs.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>See
|
<para>See
|
||||||
@ -101,8 +99,7 @@
|
|||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
puts("Match for coredumps: MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR);
|
puts("Match for coredumps: MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR);
|
||||||
}
|
}</programlisting>
|
||||||
</programlisting>
|
|
||||||
|
|
||||||
<para><function>SD_ID128_CONST_STR()</function> may be used to
|
<para><function>SD_ID128_CONST_STR()</function> may be used to
|
||||||
convert constant 128-bit IDs into constant strings for output. The
|
convert constant 128-bit IDs into constant strings for output. The
|
||||||
@ -125,9 +122,13 @@ int main(int argc, char **argv) {
|
|||||||
}</programlisting>
|
}</programlisting>
|
||||||
|
|
||||||
<para><constant>SD_ID128_UUID_FORMAT_STR</constant> is similar to
|
<para><constant>SD_ID128_UUID_FORMAT_STR</constant> is similar to
|
||||||
<constant>SD_ID128_FORMAT_STR</constant> but includes separating hyphens to conform to the
|
<constant>SD_ID128_FORMAT_STR</constant> but includes separating hyphens to conform to the "<ulink
|
||||||
"<ulink url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">canonical representation</ulink>".
|
url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">canonical
|
||||||
</para>
|
representation</ulink>". This formats the string based on <ulink
|
||||||
|
url="https://tools.ietf.org/html/rfc4122">RFC4122</ulink> Variant 1 rules, i.e. converting from Big
|
||||||
|
Endian byte order. This matches behaviour of most other Linux userspace infrastructure. It's probably
|
||||||
|
best to avoid UUIDs of other variants, in order to avoid unnecessary ambiguities. All 128-bit IDs
|
||||||
|
generated by the sd-id128 APIs strictly conform to Variant 1 Version 4 UUIDs, as per RFC 4122.</para>
|
||||||
|
|
||||||
<para>Use <function>sd_id128_equal()</function> to compare two 128-bit IDs:</para>
|
<para>Use <function>sd_id128_equal()</function> to compare two 128-bit IDs:</para>
|
||||||
|
|
||||||
|
|||||||
@ -101,10 +101,10 @@
|
|||||||
|
|
||||||
<para>Note that <function>sd_id128_get_machine_app_specific()</function>,
|
<para>Note that <function>sd_id128_get_machine_app_specific()</function>,
|
||||||
<function>sd_id128_get_boot()</function>, <function>sd_id128_get_boot_app_specific()</function>, and
|
<function>sd_id128_get_boot()</function>, <function>sd_id128_get_boot_app_specific()</function>, and
|
||||||
<function>sd_id128_get_invocation()</function> always return UUID v4 compatible IDs.
|
<function>sd_id128_get_invocation()</function> always return UUID Variant 1 Version 4 compatible IDs.
|
||||||
<function>sd_id128_get_machine()</function> will also return a UUID v4-compatible ID on new installations
|
<function>sd_id128_get_machine()</function> will also return a UUID Variant 1 Version 4 compatible ID on
|
||||||
but might not on older. It is possible to convert the machine ID into a UUID v4-compatible one. For more
|
new installations but might not on older. It is possible to convert the machine ID non-reversibly into a
|
||||||
information, see
|
UUID Variant 1 Version 4 compatible one. For more information, see
|
||||||
<citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>. It is
|
<citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>. It is
|
||||||
hence guaranteed that these functions will never return the ID consisting of all zero or all one bits
|
hence guaranteed that these functions will never return the ID consisting of all zero or all one bits
|
||||||
(<constant>SD_ID128_NULL</constant>, <constant>SD_ID128_ALLF</constant>) — with the possible exception of
|
(<constant>SD_ID128_NULL</constant>, <constant>SD_ID128_ALLF</constant>) — with the possible exception of
|
||||||
|
|||||||
@ -42,9 +42,9 @@
|
|||||||
<filename>/dev/urandom</filename> kernel random number
|
<filename>/dev/urandom</filename> kernel random number
|
||||||
generator.</para>
|
generator.</para>
|
||||||
|
|
||||||
<para>Note that <function>sd_id128_randomize()</function> always returns a UUID v4-compatible ID. It is
|
<para>Note that <function>sd_id128_randomize()</function> always returns a UUID Variant 1 Version 4
|
||||||
hence guaranteed that this function will never return the ID consisting of all zero or all one bits
|
compatible ID. It is hence guaranteed that this function will never return the ID consisting of all zero
|
||||||
(<constant>SD_ID128_NULL</constant>, <constant>SD_ID128_ALLF</constant>).</para>
|
or all one bits (<constant>SD_ID128_NULL</constant>, <constant>SD_ID128_ALLF</constant>).</para>
|
||||||
|
|
||||||
<para>For more information about the <literal>sd_id128_t</literal>
|
<para>For more information about the <literal>sd_id128_t</literal>
|
||||||
type, see
|
type, see
|
||||||
|
|||||||
@ -54,6 +54,11 @@
|
|||||||
<constant>NULL</constant> the function will validate the passed ID string, but not actually return it in parsed
|
<constant>NULL</constant> the function will validate the passed ID string, but not actually return it in parsed
|
||||||
form.</para>
|
form.</para>
|
||||||
|
|
||||||
|
<para>Note that when parsing 37 character UUIDs this is done strictly in Big Endian byte order,
|
||||||
|
i.e. according to <ulink url="https://tools.ietf.org/html/rfc4122">RFC4122</ulink> Variant 1
|
||||||
|
rules, even if the UUID encodes a different variant. This matches behaviour in various other Linux
|
||||||
|
userspace tools. It's probably wise to avoid UUIDs of other variant types.</para>
|
||||||
|
|
||||||
<para>For more information about the <literal>sd_id128_t</literal>
|
<para>For more information about the <literal>sd_id128_t</literal>
|
||||||
type see
|
type see
|
||||||
<citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
|
<citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
|
||||||
|
|||||||
@ -660,6 +660,7 @@ foreach header : ['crypt.h',
|
|||||||
'valgrind/memcheck.h',
|
'valgrind/memcheck.h',
|
||||||
'valgrind/valgrind.h',
|
'valgrind/valgrind.h',
|
||||||
'linux/time_types.h',
|
'linux/time_types.h',
|
||||||
|
'sys/sdt.h',
|
||||||
]
|
]
|
||||||
|
|
||||||
conf.set10('HAVE_' + header.underscorify().to_upper(),
|
conf.set10('HAVE_' + header.underscorify().to_upper(),
|
||||||
|
|||||||
@ -356,11 +356,13 @@ arch_list = [
|
|||||||
'mipso32',
|
'mipso32',
|
||||||
'powerpc',
|
'powerpc',
|
||||||
'powerpc64',
|
'powerpc64',
|
||||||
|
'riscv32',
|
||||||
'riscv64',
|
'riscv64',
|
||||||
's390',
|
's390',
|
||||||
's390x',
|
's390x',
|
||||||
'sparc',
|
'sparc',
|
||||||
'x86_64']
|
'x86_64'
|
||||||
|
]
|
||||||
|
|
||||||
run_target(
|
run_target(
|
||||||
'update-syscall-tables',
|
'update-syscall-tables',
|
||||||
|
|||||||
@ -22,7 +22,12 @@
|
|||||||
# error "Unknown MIPS ABI"
|
# error "Unknown MIPS ABI"
|
||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
# elif defined(__x86_64__)
|
# elif defined(__x86_64__)
|
||||||
@ -61,8 +66,14 @@
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_bpf 361
|
# define systemd_NR_bpf 361
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_bpf 280
|
# define systemd_NR_bpf 280
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_bpf 280
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_bpf 351
|
# define systemd_NR_bpf 351
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -119,8 +130,14 @@ assert_cc(__NR_bpf == systemd_NR_bpf);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_close_range 436
|
# define systemd_NR_close_range 436
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_close_range 436
|
# define systemd_NR_close_range 436
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_close_range 436
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_close_range 436
|
# define systemd_NR_close_range 436
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -177,8 +194,14 @@ assert_cc(__NR_close_range == systemd_NR_close_range);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_copy_file_range 379
|
# define systemd_NR_copy_file_range 379
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_copy_file_range 285
|
# define systemd_NR_copy_file_range 285
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_copy_file_range 285
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_copy_file_range 375
|
# define systemd_NR_copy_file_range 375
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -235,8 +258,14 @@ assert_cc(__NR_copy_file_range == systemd_NR_copy_file_range);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_epoll_pwait2 441
|
# define systemd_NR_epoll_pwait2 441
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_epoll_pwait2 441
|
# define systemd_NR_epoll_pwait2 441
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_epoll_pwait2 441
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_epoll_pwait2 441
|
# define systemd_NR_epoll_pwait2 441
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -293,8 +322,14 @@ assert_cc(__NR_epoll_pwait2 == systemd_NR_epoll_pwait2);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_getrandom 359
|
# define systemd_NR_getrandom 359
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_getrandom 278
|
# define systemd_NR_getrandom 278
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_getrandom 278
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_getrandom 349
|
# define systemd_NR_getrandom 349
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -351,8 +386,14 @@ assert_cc(__NR_getrandom == systemd_NR_getrandom);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_memfd_create 360
|
# define systemd_NR_memfd_create 360
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_memfd_create 279
|
# define systemd_NR_memfd_create 279
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_memfd_create 279
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_memfd_create 350
|
# define systemd_NR_memfd_create 350
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -409,8 +450,14 @@ assert_cc(__NR_memfd_create == systemd_NR_memfd_create);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_mount_setattr 442
|
# define systemd_NR_mount_setattr 442
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_mount_setattr 442
|
# define systemd_NR_mount_setattr 442
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_mount_setattr 442
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_mount_setattr 442
|
# define systemd_NR_mount_setattr 442
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -467,8 +514,14 @@ assert_cc(__NR_mount_setattr == systemd_NR_mount_setattr);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_move_mount 429
|
# define systemd_NR_move_mount 429
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_move_mount 429
|
# define systemd_NR_move_mount 429
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_move_mount 429
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_move_mount 429
|
# define systemd_NR_move_mount 429
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -525,8 +578,14 @@ assert_cc(__NR_move_mount == systemd_NR_move_mount);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_name_to_handle_at 345
|
# define systemd_NR_name_to_handle_at 345
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_name_to_handle_at 264
|
# define systemd_NR_name_to_handle_at 264
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_name_to_handle_at 264
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_name_to_handle_at 335
|
# define systemd_NR_name_to_handle_at 335
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -583,8 +642,14 @@ assert_cc(__NR_name_to_handle_at == systemd_NR_name_to_handle_at);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_open_tree 428
|
# define systemd_NR_open_tree 428
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_open_tree 428
|
# define systemd_NR_open_tree 428
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_open_tree 428
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_open_tree 428
|
# define systemd_NR_open_tree 428
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -641,8 +706,14 @@ assert_cc(__NR_open_tree == systemd_NR_open_tree);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_pidfd_open 434
|
# define systemd_NR_pidfd_open 434
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_pidfd_open 434
|
# define systemd_NR_pidfd_open 434
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_pidfd_open 434
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_pidfd_open 434
|
# define systemd_NR_pidfd_open 434
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -699,8 +770,14 @@ assert_cc(__NR_pidfd_open == systemd_NR_pidfd_open);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_pidfd_send_signal 424
|
# define systemd_NR_pidfd_send_signal 424
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_pidfd_send_signal 424
|
# define systemd_NR_pidfd_send_signal 424
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_pidfd_send_signal 424
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_pidfd_send_signal 424
|
# define systemd_NR_pidfd_send_signal 424
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -757,8 +834,14 @@ assert_cc(__NR_pidfd_send_signal == systemd_NR_pidfd_send_signal);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_pkey_mprotect 386
|
# define systemd_NR_pkey_mprotect 386
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_pkey_mprotect 288
|
# define systemd_NR_pkey_mprotect 288
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_pkey_mprotect 288
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_pkey_mprotect 384
|
# define systemd_NR_pkey_mprotect 384
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -815,8 +898,14 @@ assert_cc(__NR_pkey_mprotect == systemd_NR_pkey_mprotect);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_renameat2 357
|
# define systemd_NR_renameat2 357
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_renameat2 276
|
# define systemd_NR_renameat2 276
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_renameat2 276
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_renameat2 347
|
# define systemd_NR_renameat2 347
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -873,8 +962,14 @@ assert_cc(__NR_renameat2 == systemd_NR_renameat2);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_setns 350
|
# define systemd_NR_setns 350
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_setns 268
|
# define systemd_NR_setns 268
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_setns 268
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_setns 339
|
# define systemd_NR_setns 339
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
@ -931,8 +1026,14 @@ assert_cc(__NR_setns == systemd_NR_setns);
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_statx 383
|
# define systemd_NR_statx 383
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
# define systemd_NR_statx 291
|
# define systemd_NR_statx 291
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
|
# define systemd_NR_statx 291
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_statx 379
|
# define systemd_NR_statx 379
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
|
|||||||
@ -73,8 +73,14 @@ DEF_TEMPLATE_B = '''\
|
|||||||
# endif
|
# endif
|
||||||
# elif defined(__powerpc__)
|
# elif defined(__powerpc__)
|
||||||
# define systemd_NR_{syscall} {nr_powerpc}
|
# define systemd_NR_{syscall} {nr_powerpc}
|
||||||
# elif defined(__riscv) && defined(__LP64__)
|
# elif defined(__riscv)
|
||||||
|
# if __riscv_xlen == 32
|
||||||
|
# define systemd_NR_{syscall} {nr_riscv32}
|
||||||
|
# elif __riscv_xlen == 64
|
||||||
# define systemd_NR_{syscall} {nr_riscv64}
|
# define systemd_NR_{syscall} {nr_riscv64}
|
||||||
|
# else
|
||||||
|
# error "Unknown RISC-V ABI"
|
||||||
|
# endif
|
||||||
# elif defined(__s390__)
|
# elif defined(__s390__)
|
||||||
# define systemd_NR_{syscall} {nr_s390}
|
# define systemd_NR_{syscall} {nr_s390}
|
||||||
# elif defined(__sparc__)
|
# elif defined(__sparc__)
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load
|
kexec_load
|
||||||
keyctl
|
keyctl
|
||||||
kill
|
kill
|
||||||
|
landlock_add_rule
|
||||||
|
landlock_create_ruleset
|
||||||
|
landlock_restrict_self
|
||||||
lchown
|
lchown
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr
|
lgetxattr
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load 448
|
kexec_load 448
|
||||||
keyctl 441
|
keyctl 441
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 555
|
||||||
|
landlock_create_ruleset 554
|
||||||
|
landlock_restrict_self 556
|
||||||
lchown 208
|
lchown 208
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 386
|
lgetxattr 386
|
||||||
@ -401,7 +404,7 @@ pwritev 491
|
|||||||
pwritev2 521
|
pwritev2 521
|
||||||
query_module 347
|
query_module 347
|
||||||
quotactl 148
|
quotactl 148
|
||||||
quotactl_path 553
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 379
|
readahead 379
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load 294
|
|||||||
kexec_load 104
|
kexec_load 104
|
||||||
keyctl 219
|
keyctl 219
|
||||||
kill 129
|
kill 129
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown
|
lchown
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 9
|
lgetxattr 9
|
||||||
@ -401,7 +404,7 @@ pwritev 70
|
|||||||
pwritev2 287
|
pwritev2 287
|
||||||
query_module
|
query_module
|
||||||
quotactl 60
|
quotactl 60
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 63
|
read 63
|
||||||
readahead 213
|
readahead 213
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load 401
|
|||||||
kexec_load 347
|
kexec_load 347
|
||||||
keyctl 311
|
keyctl 311
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 16
|
lchown 16
|
||||||
lchown32 198
|
lchown32 198
|
||||||
lgetxattr 230
|
lgetxattr 230
|
||||||
@ -401,7 +404,7 @@ pwritev 362
|
|||||||
pwritev2 393
|
pwritev2 393
|
||||||
query_module
|
query_module
|
||||||
quotactl 131
|
quotactl 131
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 225
|
readahead 225
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load 294
|
|||||||
kexec_load 104
|
kexec_load 104
|
||||||
keyctl 219
|
keyctl 219
|
||||||
kill 129
|
kill 129
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown
|
lchown
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 9
|
lgetxattr 9
|
||||||
@ -401,7 +404,7 @@ pwritev 70
|
|||||||
pwritev2 287
|
pwritev2 287
|
||||||
query_module
|
query_module
|
||||||
quotactl 60
|
quotactl 60
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 63
|
read 63
|
||||||
readahead 213
|
readahead 213
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load 283
|
kexec_load 283
|
||||||
keyctl 288
|
keyctl 288
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 16
|
lchown 16
|
||||||
lchown32 198
|
lchown32 198
|
||||||
lgetxattr 230
|
lgetxattr 230
|
||||||
@ -401,7 +404,7 @@ pwritev 334
|
|||||||
pwritev2 379
|
pwritev2 379
|
||||||
query_module 167
|
query_module 167
|
||||||
quotactl 131
|
quotactl 131
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 225
|
readahead 225
|
||||||
readdir 89
|
readdir 89
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load 1268
|
kexec_load 1268
|
||||||
keyctl 1273
|
keyctl 1273
|
||||||
kill 1053
|
kill 1053
|
||||||
|
landlock_add_rule 1469
|
||||||
|
landlock_create_ruleset 1468
|
||||||
|
landlock_restrict_self 1470
|
||||||
lchown 1124
|
lchown 1124
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 1221
|
lgetxattr 1221
|
||||||
@ -401,7 +404,7 @@ pwritev 1320
|
|||||||
pwritev2 1349
|
pwritev2 1349
|
||||||
query_module
|
query_module
|
||||||
quotactl 1137
|
quotactl 1137
|
||||||
quotactl_path 1467
|
quotactl_path
|
||||||
read 1026
|
read 1026
|
||||||
readahead 1216
|
readahead 1216
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load 313
|
kexec_load 313
|
||||||
keyctl 281
|
keyctl 281
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 182
|
lchown 182
|
||||||
lchown32 212
|
lchown32 212
|
||||||
lgetxattr 227
|
lgetxattr 227
|
||||||
@ -401,7 +404,7 @@ pwritev 330
|
|||||||
pwritev2 378
|
pwritev2 378
|
||||||
query_module 167
|
query_module 167
|
||||||
quotactl 131
|
quotactl 131
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 240
|
readahead 240
|
||||||
readdir 89
|
readdir 89
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load 5270
|
kexec_load 5270
|
||||||
keyctl 5241
|
keyctl 5241
|
||||||
kill 5060
|
kill 5060
|
||||||
|
landlock_add_rule 5445
|
||||||
|
landlock_create_ruleset 5444
|
||||||
|
landlock_restrict_self 5446
|
||||||
lchown 5092
|
lchown 5092
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 5184
|
lgetxattr 5184
|
||||||
@ -401,7 +404,7 @@ pwritev 5290
|
|||||||
pwritev2 5322
|
pwritev2 5322
|
||||||
query_module 5171
|
query_module 5171
|
||||||
quotactl 5172
|
quotactl 5172
|
||||||
quotactl_path 5443
|
quotactl_path
|
||||||
read 5000
|
read 5000
|
||||||
readahead 5179
|
readahead 5179
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load 6274
|
kexec_load 6274
|
||||||
keyctl 6245
|
keyctl 6245
|
||||||
kill 6060
|
kill 6060
|
||||||
|
landlock_add_rule 6445
|
||||||
|
landlock_create_ruleset 6444
|
||||||
|
landlock_restrict_self 6446
|
||||||
lchown 6092
|
lchown 6092
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 6184
|
lgetxattr 6184
|
||||||
@ -401,7 +404,7 @@ pwritev 6294
|
|||||||
pwritev2 6326
|
pwritev2 6326
|
||||||
query_module 6171
|
query_module 6171
|
||||||
quotactl 6172
|
quotactl 6172
|
||||||
quotactl_path 6443
|
quotactl_path
|
||||||
read 6000
|
read 6000
|
||||||
readahead 6179
|
readahead 6179
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load 4311
|
kexec_load 4311
|
||||||
keyctl 4282
|
keyctl 4282
|
||||||
kill 4037
|
kill 4037
|
||||||
|
landlock_add_rule 4445
|
||||||
|
landlock_create_ruleset 4444
|
||||||
|
landlock_restrict_self 4446
|
||||||
lchown 4016
|
lchown 4016
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 4228
|
lgetxattr 4228
|
||||||
@ -401,7 +404,7 @@ pwritev 4331
|
|||||||
pwritev2 4362
|
pwritev2 4362
|
||||||
query_module 4187
|
query_module 4187
|
||||||
quotactl 4131
|
quotactl 4131
|
||||||
quotactl_path 4443
|
quotactl_path
|
||||||
read 4003
|
read 4003
|
||||||
readahead 4223
|
readahead 4223
|
||||||
readdir 4089
|
readdir 4089
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load 382
|
|||||||
kexec_load 268
|
kexec_load 268
|
||||||
keyctl 271
|
keyctl 271
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 16
|
lchown 16
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 213
|
lgetxattr 213
|
||||||
@ -401,7 +404,7 @@ pwritev 321
|
|||||||
pwritev2 381
|
pwritev2 381
|
||||||
query_module 166
|
query_module 166
|
||||||
quotactl 131
|
quotactl 131
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 191
|
readahead 191
|
||||||
readdir 89
|
readdir 89
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load 382
|
|||||||
kexec_load 268
|
kexec_load 268
|
||||||
keyctl 271
|
keyctl 271
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 16
|
lchown 16
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 213
|
lgetxattr 213
|
||||||
@ -401,7 +404,7 @@ pwritev 321
|
|||||||
pwritev2 381
|
pwritev2 381
|
||||||
query_module 166
|
query_module 166
|
||||||
quotactl 131
|
quotactl 131
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 191
|
readahead 191
|
||||||
readdir 89
|
readdir 89
|
||||||
|
|||||||
598
src/basic/syscalls-riscv32.txt
Normal file
598
src/basic/syscalls-riscv32.txt
Normal file
@ -0,0 +1,598 @@
|
|||||||
|
_llseek
|
||||||
|
_newselect
|
||||||
|
_sysctl
|
||||||
|
accept 202
|
||||||
|
accept4 242
|
||||||
|
access
|
||||||
|
acct 89
|
||||||
|
add_key 217
|
||||||
|
adjtimex
|
||||||
|
alarm
|
||||||
|
arc_gettls
|
||||||
|
arc_settls
|
||||||
|
arc_usr_cmpxchg
|
||||||
|
arch_prctl
|
||||||
|
arm_fadvise64_64
|
||||||
|
atomic_barrier
|
||||||
|
atomic_cmpxchg_32
|
||||||
|
bdflush
|
||||||
|
bind 200
|
||||||
|
bpf 280
|
||||||
|
brk 214
|
||||||
|
cachectl
|
||||||
|
cacheflush
|
||||||
|
capget 90
|
||||||
|
capset 91
|
||||||
|
chdir 49
|
||||||
|
chmod
|
||||||
|
chown
|
||||||
|
chown32
|
||||||
|
chroot 51
|
||||||
|
clock_adjtime
|
||||||
|
clock_adjtime64 405
|
||||||
|
clock_getres
|
||||||
|
clock_getres_time64 406
|
||||||
|
clock_gettime
|
||||||
|
clock_gettime64 403
|
||||||
|
clock_nanosleep
|
||||||
|
clock_nanosleep_time64 407
|
||||||
|
clock_settime
|
||||||
|
clock_settime64 404
|
||||||
|
clone 220
|
||||||
|
clone2
|
||||||
|
clone3
|
||||||
|
close 57
|
||||||
|
close_range 436
|
||||||
|
connect 203
|
||||||
|
copy_file_range 285
|
||||||
|
creat
|
||||||
|
create_module
|
||||||
|
delete_module 106
|
||||||
|
dipc
|
||||||
|
dup 23
|
||||||
|
dup2
|
||||||
|
dup3 24
|
||||||
|
epoll_create
|
||||||
|
epoll_create1 20
|
||||||
|
epoll_ctl 21
|
||||||
|
epoll_ctl_old
|
||||||
|
epoll_pwait 22
|
||||||
|
epoll_pwait2 441
|
||||||
|
epoll_wait
|
||||||
|
epoll_wait_old
|
||||||
|
eventfd
|
||||||
|
eventfd2 19
|
||||||
|
exec_with_loader
|
||||||
|
execv
|
||||||
|
execve 221
|
||||||
|
execveat 281
|
||||||
|
exit 93
|
||||||
|
exit_group 94
|
||||||
|
faccessat 48
|
||||||
|
faccessat2 439
|
||||||
|
fadvise64
|
||||||
|
fadvise64_64 223
|
||||||
|
fallocate 47
|
||||||
|
fanotify_init 262
|
||||||
|
fanotify_mark 263
|
||||||
|
fchdir 50
|
||||||
|
fchmod 52
|
||||||
|
fchmodat 53
|
||||||
|
fchown 55
|
||||||
|
fchown32
|
||||||
|
fchownat 54
|
||||||
|
fcntl
|
||||||
|
fcntl64 25
|
||||||
|
fdatasync 83
|
||||||
|
fgetxattr 10
|
||||||
|
finit_module 273
|
||||||
|
flistxattr 13
|
||||||
|
flock 32
|
||||||
|
fork
|
||||||
|
fp_udfiex_crtl
|
||||||
|
fremovexattr 16
|
||||||
|
fsconfig 431
|
||||||
|
fsetxattr 7
|
||||||
|
fsmount 432
|
||||||
|
fsopen 430
|
||||||
|
fspick 433
|
||||||
|
fstat
|
||||||
|
fstat64
|
||||||
|
fstatat64
|
||||||
|
fstatfs
|
||||||
|
fstatfs64 44
|
||||||
|
fsync 82
|
||||||
|
ftruncate
|
||||||
|
ftruncate64 46
|
||||||
|
futex
|
||||||
|
futex_time64 422
|
||||||
|
futimesat
|
||||||
|
get_kernel_syms
|
||||||
|
get_mempolicy 236
|
||||||
|
get_robust_list 100
|
||||||
|
get_thread_area
|
||||||
|
getcpu 168
|
||||||
|
getcwd 17
|
||||||
|
getdents
|
||||||
|
getdents64 61
|
||||||
|
getdomainname
|
||||||
|
getdtablesize
|
||||||
|
getegid 177
|
||||||
|
getegid32
|
||||||
|
geteuid 175
|
||||||
|
geteuid32
|
||||||
|
getgid 176
|
||||||
|
getgid32
|
||||||
|
getgroups 158
|
||||||
|
getgroups32
|
||||||
|
gethostname
|
||||||
|
getitimer 102
|
||||||
|
getpagesize
|
||||||
|
getpeername 205
|
||||||
|
getpgid 155
|
||||||
|
getpgrp
|
||||||
|
getpid 172
|
||||||
|
getpmsg
|
||||||
|
getppid 173
|
||||||
|
getpriority 141
|
||||||
|
getrandom 278
|
||||||
|
getresgid 150
|
||||||
|
getresgid32
|
||||||
|
getresuid 148
|
||||||
|
getresuid32
|
||||||
|
getrlimit
|
||||||
|
getrusage 165
|
||||||
|
getsid 156
|
||||||
|
getsockname 204
|
||||||
|
getsockopt 209
|
||||||
|
gettid 178
|
||||||
|
gettimeofday
|
||||||
|
getuid 174
|
||||||
|
getuid32
|
||||||
|
getunwind
|
||||||
|
getxattr 8
|
||||||
|
getxgid
|
||||||
|
getxpid
|
||||||
|
getxuid
|
||||||
|
idle
|
||||||
|
init_module 105
|
||||||
|
inotify_add_watch 27
|
||||||
|
inotify_init
|
||||||
|
inotify_init1 26
|
||||||
|
inotify_rm_watch 28
|
||||||
|
io_cancel 3
|
||||||
|
io_destroy 1
|
||||||
|
io_getevents
|
||||||
|
io_pgetevents
|
||||||
|
io_pgetevents_time64 416
|
||||||
|
io_setup 0
|
||||||
|
io_submit 2
|
||||||
|
io_uring_enter 426
|
||||||
|
io_uring_register 427
|
||||||
|
io_uring_setup 425
|
||||||
|
ioctl 29
|
||||||
|
ioperm
|
||||||
|
iopl
|
||||||
|
ioprio_get 31
|
||||||
|
ioprio_set 30
|
||||||
|
ipc
|
||||||
|
kcmp 272
|
||||||
|
kern_features
|
||||||
|
kexec_file_load 294
|
||||||
|
kexec_load 104
|
||||||
|
keyctl 219
|
||||||
|
kill 129
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
|
lchown
|
||||||
|
lchown32
|
||||||
|
lgetxattr 9
|
||||||
|
link
|
||||||
|
linkat 37
|
||||||
|
listen 201
|
||||||
|
listxattr 11
|
||||||
|
llistxattr 12
|
||||||
|
lookup_dcookie 18
|
||||||
|
lremovexattr 15
|
||||||
|
lseek
|
||||||
|
lsetxattr 6
|
||||||
|
lstat
|
||||||
|
lstat64
|
||||||
|
madvise 233
|
||||||
|
mbind 235
|
||||||
|
membarrier 283
|
||||||
|
memfd_create 279
|
||||||
|
memory_ordering
|
||||||
|
migrate_pages 238
|
||||||
|
mincore 232
|
||||||
|
mkdir
|
||||||
|
mkdirat 34
|
||||||
|
mknod
|
||||||
|
mknodat 33
|
||||||
|
mlock 228
|
||||||
|
mlock2 284
|
||||||
|
mlockall 230
|
||||||
|
mmap
|
||||||
|
mmap2 222
|
||||||
|
modify_ldt
|
||||||
|
mount 40
|
||||||
|
mount_setattr 442
|
||||||
|
move_mount 429
|
||||||
|
move_pages 239
|
||||||
|
mprotect 226
|
||||||
|
mq_getsetattr 185
|
||||||
|
mq_notify 184
|
||||||
|
mq_open 180
|
||||||
|
mq_timedreceive
|
||||||
|
mq_timedreceive_time64 419
|
||||||
|
mq_timedsend
|
||||||
|
mq_timedsend_time64 418
|
||||||
|
mq_unlink 181
|
||||||
|
mremap 216
|
||||||
|
msgctl 187
|
||||||
|
msgget 186
|
||||||
|
msgrcv 188
|
||||||
|
msgsnd 189
|
||||||
|
msync 227
|
||||||
|
multiplexer
|
||||||
|
munlock 229
|
||||||
|
munlockall 231
|
||||||
|
munmap 215
|
||||||
|
name_to_handle_at 264
|
||||||
|
nanosleep
|
||||||
|
newfstatat
|
||||||
|
nfsservctl 42
|
||||||
|
nice
|
||||||
|
old_adjtimex
|
||||||
|
old_getpagesize
|
||||||
|
oldfstat
|
||||||
|
oldlstat
|
||||||
|
oldolduname
|
||||||
|
oldstat
|
||||||
|
oldumount
|
||||||
|
olduname
|
||||||
|
open
|
||||||
|
open_by_handle_at 265
|
||||||
|
open_tree 428
|
||||||
|
openat 56
|
||||||
|
openat2 437
|
||||||
|
or1k_atomic
|
||||||
|
osf_adjtime
|
||||||
|
osf_afs_syscall
|
||||||
|
osf_alt_plock
|
||||||
|
osf_alt_setsid
|
||||||
|
osf_alt_sigpending
|
||||||
|
osf_asynch_daemon
|
||||||
|
osf_audcntl
|
||||||
|
osf_audgen
|
||||||
|
osf_chflags
|
||||||
|
osf_execve
|
||||||
|
osf_exportfs
|
||||||
|
osf_fchflags
|
||||||
|
osf_fdatasync
|
||||||
|
osf_fpathconf
|
||||||
|
osf_fstat
|
||||||
|
osf_fstatfs
|
||||||
|
osf_fstatfs64
|
||||||
|
osf_fuser
|
||||||
|
osf_getaddressconf
|
||||||
|
osf_getdirentries
|
||||||
|
osf_getdomainname
|
||||||
|
osf_getfh
|
||||||
|
osf_getfsstat
|
||||||
|
osf_gethostid
|
||||||
|
osf_getitimer
|
||||||
|
osf_getlogin
|
||||||
|
osf_getmnt
|
||||||
|
osf_getrusage
|
||||||
|
osf_getsysinfo
|
||||||
|
osf_gettimeofday
|
||||||
|
osf_kloadcall
|
||||||
|
osf_kmodcall
|
||||||
|
osf_lstat
|
||||||
|
osf_memcntl
|
||||||
|
osf_mincore
|
||||||
|
osf_mount
|
||||||
|
osf_mremap
|
||||||
|
osf_msfs_syscall
|
||||||
|
osf_msleep
|
||||||
|
osf_mvalid
|
||||||
|
osf_mwakeup
|
||||||
|
osf_naccept
|
||||||
|
osf_nfssvc
|
||||||
|
osf_ngetpeername
|
||||||
|
osf_ngetsockname
|
||||||
|
osf_nrecvfrom
|
||||||
|
osf_nrecvmsg
|
||||||
|
osf_nsendmsg
|
||||||
|
osf_ntp_adjtime
|
||||||
|
osf_ntp_gettime
|
||||||
|
osf_old_creat
|
||||||
|
osf_old_fstat
|
||||||
|
osf_old_getpgrp
|
||||||
|
osf_old_killpg
|
||||||
|
osf_old_lstat
|
||||||
|
osf_old_open
|
||||||
|
osf_old_sigaction
|
||||||
|
osf_old_sigblock
|
||||||
|
osf_old_sigreturn
|
||||||
|
osf_old_sigsetmask
|
||||||
|
osf_old_sigvec
|
||||||
|
osf_old_stat
|
||||||
|
osf_old_vadvise
|
||||||
|
osf_old_vtrace
|
||||||
|
osf_old_wait
|
||||||
|
osf_oldquota
|
||||||
|
osf_pathconf
|
||||||
|
osf_pid_block
|
||||||
|
osf_pid_unblock
|
||||||
|
osf_plock
|
||||||
|
osf_priocntlset
|
||||||
|
osf_profil
|
||||||
|
osf_proplist_syscall
|
||||||
|
osf_reboot
|
||||||
|
osf_revoke
|
||||||
|
osf_sbrk
|
||||||
|
osf_security
|
||||||
|
osf_select
|
||||||
|
osf_set_program_attributes
|
||||||
|
osf_set_speculative
|
||||||
|
osf_sethostid
|
||||||
|
osf_setitimer
|
||||||
|
osf_setlogin
|
||||||
|
osf_setsysinfo
|
||||||
|
osf_settimeofday
|
||||||
|
osf_shmat
|
||||||
|
osf_signal
|
||||||
|
osf_sigprocmask
|
||||||
|
osf_sigsendset
|
||||||
|
osf_sigstack
|
||||||
|
osf_sigwaitprim
|
||||||
|
osf_sstk
|
||||||
|
osf_stat
|
||||||
|
osf_statfs
|
||||||
|
osf_statfs64
|
||||||
|
osf_subsys_info
|
||||||
|
osf_swapctl
|
||||||
|
osf_swapon
|
||||||
|
osf_syscall
|
||||||
|
osf_sysinfo
|
||||||
|
osf_table
|
||||||
|
osf_uadmin
|
||||||
|
osf_usleep_thread
|
||||||
|
osf_uswitch
|
||||||
|
osf_utc_adjtime
|
||||||
|
osf_utc_gettime
|
||||||
|
osf_utimes
|
||||||
|
osf_utsname
|
||||||
|
osf_wait4
|
||||||
|
osf_waitid
|
||||||
|
pause
|
||||||
|
pciconfig_iobase
|
||||||
|
pciconfig_read
|
||||||
|
pciconfig_write
|
||||||
|
perf_event_open 241
|
||||||
|
perfctr
|
||||||
|
perfmonctl
|
||||||
|
personality 92
|
||||||
|
pidfd_getfd 438
|
||||||
|
pidfd_open 434
|
||||||
|
pidfd_send_signal 424
|
||||||
|
pipe
|
||||||
|
pipe2 59
|
||||||
|
pivot_root 41
|
||||||
|
pkey_alloc 289
|
||||||
|
pkey_free 290
|
||||||
|
pkey_mprotect 288
|
||||||
|
poll
|
||||||
|
ppoll
|
||||||
|
ppoll_time64 414
|
||||||
|
prctl 167
|
||||||
|
pread64 67
|
||||||
|
preadv 69
|
||||||
|
preadv2 286
|
||||||
|
prlimit64 261
|
||||||
|
process_madvise 440
|
||||||
|
process_vm_readv 270
|
||||||
|
process_vm_writev 271
|
||||||
|
pselect6
|
||||||
|
pselect6_time64 413
|
||||||
|
ptrace 117
|
||||||
|
pwrite64 68
|
||||||
|
pwritev 70
|
||||||
|
pwritev2 287
|
||||||
|
query_module
|
||||||
|
quotactl 60
|
||||||
|
quotactl_path
|
||||||
|
read 63
|
||||||
|
readahead 213
|
||||||
|
readdir
|
||||||
|
readlink
|
||||||
|
readlinkat 78
|
||||||
|
readv 65
|
||||||
|
reboot 142
|
||||||
|
recv
|
||||||
|
recvfrom 207
|
||||||
|
recvmmsg
|
||||||
|
recvmmsg_time64 417
|
||||||
|
recvmsg 212
|
||||||
|
remap_file_pages 234
|
||||||
|
removexattr 14
|
||||||
|
rename
|
||||||
|
renameat
|
||||||
|
renameat2 276
|
||||||
|
request_key 218
|
||||||
|
restart_syscall 128
|
||||||
|
riscv_flush_icache 259
|
||||||
|
rmdir
|
||||||
|
rseq 293
|
||||||
|
rt_sigaction 134
|
||||||
|
rt_sigpending 136
|
||||||
|
rt_sigprocmask 135
|
||||||
|
rt_sigqueueinfo 138
|
||||||
|
rt_sigreturn 139
|
||||||
|
rt_sigsuspend 133
|
||||||
|
rt_sigtimedwait
|
||||||
|
rt_sigtimedwait_time64 421
|
||||||
|
rt_tgsigqueueinfo 240
|
||||||
|
rtas
|
||||||
|
s390_guarded_storage
|
||||||
|
s390_pci_mmio_read
|
||||||
|
s390_pci_mmio_write
|
||||||
|
s390_runtime_instr
|
||||||
|
s390_sthyi
|
||||||
|
sched_get_affinity
|
||||||
|
sched_get_priority_max 125
|
||||||
|
sched_get_priority_min 126
|
||||||
|
sched_getaffinity 123
|
||||||
|
sched_getattr 275
|
||||||
|
sched_getparam 121
|
||||||
|
sched_getscheduler 120
|
||||||
|
sched_rr_get_interval
|
||||||
|
sched_rr_get_interval_time64 423
|
||||||
|
sched_set_affinity
|
||||||
|
sched_setaffinity 122
|
||||||
|
sched_setattr 274
|
||||||
|
sched_setparam 118
|
||||||
|
sched_setscheduler 119
|
||||||
|
sched_yield 124
|
||||||
|
seccomp 277
|
||||||
|
select
|
||||||
|
semctl 191
|
||||||
|
semget 190
|
||||||
|
semop 193
|
||||||
|
semtimedop
|
||||||
|
semtimedop_time64 420
|
||||||
|
send
|
||||||
|
sendfile
|
||||||
|
sendfile64 71
|
||||||
|
sendmmsg 269
|
||||||
|
sendmsg 211
|
||||||
|
sendto 206
|
||||||
|
set_mempolicy 237
|
||||||
|
set_robust_list 99
|
||||||
|
set_thread_area
|
||||||
|
set_tid_address 96
|
||||||
|
setdomainname 162
|
||||||
|
setfsgid 152
|
||||||
|
setfsgid32
|
||||||
|
setfsuid 151
|
||||||
|
setfsuid32
|
||||||
|
setgid 144
|
||||||
|
setgid32
|
||||||
|
setgroups 159
|
||||||
|
setgroups32
|
||||||
|
sethae
|
||||||
|
sethostname 161
|
||||||
|
setitimer 103
|
||||||
|
setns 268
|
||||||
|
setpgid 154
|
||||||
|
setpgrp
|
||||||
|
setpriority 140
|
||||||
|
setregid 143
|
||||||
|
setregid32
|
||||||
|
setresgid 149
|
||||||
|
setresgid32
|
||||||
|
setresuid 147
|
||||||
|
setresuid32
|
||||||
|
setreuid 145
|
||||||
|
setreuid32
|
||||||
|
setrlimit
|
||||||
|
setsid 157
|
||||||
|
setsockopt 208
|
||||||
|
settimeofday
|
||||||
|
setuid 146
|
||||||
|
setuid32
|
||||||
|
setxattr 5
|
||||||
|
sgetmask
|
||||||
|
shmat 196
|
||||||
|
shmctl 195
|
||||||
|
shmdt 197
|
||||||
|
shmget 194
|
||||||
|
shutdown 210
|
||||||
|
sigaction
|
||||||
|
sigaltstack 132
|
||||||
|
signal
|
||||||
|
signalfd
|
||||||
|
signalfd4 74
|
||||||
|
sigpending
|
||||||
|
sigprocmask
|
||||||
|
sigreturn
|
||||||
|
sigsuspend
|
||||||
|
socket 198
|
||||||
|
socketcall
|
||||||
|
socketpair 199
|
||||||
|
splice 76
|
||||||
|
spu_create
|
||||||
|
spu_run
|
||||||
|
ssetmask
|
||||||
|
stat
|
||||||
|
stat64
|
||||||
|
statfs
|
||||||
|
statfs64 43
|
||||||
|
statx 291
|
||||||
|
stime
|
||||||
|
subpage_prot
|
||||||
|
swapcontext
|
||||||
|
swapoff 225
|
||||||
|
swapon 224
|
||||||
|
switch_endian
|
||||||
|
symlink
|
||||||
|
symlinkat 36
|
||||||
|
sync 81
|
||||||
|
sync_file_range 84
|
||||||
|
sync_file_range2
|
||||||
|
syncfs 267
|
||||||
|
sys_debug_setcontext
|
||||||
|
syscall
|
||||||
|
sysfs
|
||||||
|
sysinfo 179
|
||||||
|
syslog 116
|
||||||
|
sysmips
|
||||||
|
tee 77
|
||||||
|
tgkill 131
|
||||||
|
time
|
||||||
|
timer_create 107
|
||||||
|
timer_delete 111
|
||||||
|
timer_getoverrun 109
|
||||||
|
timer_gettime
|
||||||
|
timer_gettime64 408
|
||||||
|
timer_settime
|
||||||
|
timer_settime64 409
|
||||||
|
timerfd
|
||||||
|
timerfd_create 85
|
||||||
|
timerfd_gettime
|
||||||
|
timerfd_gettime64 410
|
||||||
|
timerfd_settime
|
||||||
|
timerfd_settime64 411
|
||||||
|
times 153
|
||||||
|
tkill 130
|
||||||
|
truncate
|
||||||
|
truncate64 45
|
||||||
|
ugetrlimit
|
||||||
|
umask 166
|
||||||
|
umount
|
||||||
|
umount2 39
|
||||||
|
uname 160
|
||||||
|
unlink
|
||||||
|
unlinkat 35
|
||||||
|
unshare 97
|
||||||
|
uselib
|
||||||
|
userfaultfd 282
|
||||||
|
ustat
|
||||||
|
utime
|
||||||
|
utimensat
|
||||||
|
utimensat_time64 412
|
||||||
|
utimes
|
||||||
|
utrap_install
|
||||||
|
vfork
|
||||||
|
vhangup 58
|
||||||
|
vm86
|
||||||
|
vm86old
|
||||||
|
vmsplice 75
|
||||||
|
wait4
|
||||||
|
waitid 95
|
||||||
|
waitpid
|
||||||
|
write 64
|
||||||
|
writev 66
|
||||||
@ -182,6 +182,9 @@ kexec_file_load 294
|
|||||||
kexec_load 104
|
kexec_load 104
|
||||||
keyctl 219
|
keyctl 219
|
||||||
kill 129
|
kill 129
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown
|
lchown
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 9
|
lgetxattr 9
|
||||||
@ -401,7 +404,7 @@ pwritev 70
|
|||||||
pwritev2 287
|
pwritev2 287
|
||||||
query_module
|
query_module
|
||||||
quotactl 60
|
quotactl 60
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 63
|
read 63
|
||||||
readahead 213
|
readahead 213
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load 381
|
|||||||
kexec_load 277
|
kexec_load 277
|
||||||
keyctl 280
|
keyctl 280
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 16
|
lchown 16
|
||||||
lchown32 198
|
lchown32 198
|
||||||
lgetxattr 228
|
lgetxattr 228
|
||||||
@ -401,7 +404,7 @@ pwritev 329
|
|||||||
pwritev2 377
|
pwritev2 377
|
||||||
query_module 167
|
query_module 167
|
||||||
quotactl 131
|
quotactl 131
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 222
|
readahead 222
|
||||||
readdir 89
|
readdir 89
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load 381
|
|||||||
kexec_load 277
|
kexec_load 277
|
||||||
keyctl 280
|
keyctl 280
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 198
|
lchown 198
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 228
|
lgetxattr 228
|
||||||
@ -401,7 +404,7 @@ pwritev 329
|
|||||||
pwritev2 377
|
pwritev2 377
|
||||||
query_module 167
|
query_module 167
|
||||||
quotactl 131
|
quotactl 131
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 222
|
readahead 222
|
||||||
readdir 89
|
readdir 89
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load
|
|||||||
kexec_load 306
|
kexec_load 306
|
||||||
keyctl 283
|
keyctl 283
|
||||||
kill 37
|
kill 37
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 16
|
lchown 16
|
||||||
lchown32 31
|
lchown32 31
|
||||||
lgetxattr 173
|
lgetxattr 173
|
||||||
@ -401,7 +404,7 @@ pwritev 325
|
|||||||
pwritev2 359
|
pwritev2 359
|
||||||
query_module 184
|
query_module 184
|
||||||
quotactl 165
|
quotactl 165
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 3
|
read 3
|
||||||
readahead 205
|
readahead 205
|
||||||
readdir 204
|
readdir 204
|
||||||
|
|||||||
@ -182,6 +182,9 @@ kexec_file_load 320
|
|||||||
kexec_load 246
|
kexec_load 246
|
||||||
keyctl 250
|
keyctl 250
|
||||||
kill 62
|
kill 62
|
||||||
|
landlock_add_rule 445
|
||||||
|
landlock_create_ruleset 444
|
||||||
|
landlock_restrict_self 446
|
||||||
lchown 94
|
lchown 94
|
||||||
lchown32
|
lchown32
|
||||||
lgetxattr 192
|
lgetxattr 192
|
||||||
@ -401,7 +404,7 @@ pwritev 296
|
|||||||
pwritev2 328
|
pwritev2 328
|
||||||
query_module 178
|
query_module 178
|
||||||
quotactl 179
|
quotactl 179
|
||||||
quotactl_path 443
|
quotactl_path
|
||||||
read 0
|
read 0
|
||||||
readahead 187
|
readahead 187
|
||||||
readdir
|
readdir
|
||||||
|
|||||||
@ -89,41 +89,6 @@
|
|||||||
# pragma GCC diagnostic ignored "-Waddress-of-packed-member"
|
# pragma GCC diagnostic ignored "-Waddress-of-packed-member"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int journal_file_tail_end(JournalFile *f, uint64_t *ret_offset) {
|
|
||||||
Object *tail;
|
|
||||||
uint64_t p;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(f);
|
|
||||||
assert(f->header);
|
|
||||||
assert(ret_offset);
|
|
||||||
|
|
||||||
p = le64toh(f->header->tail_object_offset);
|
|
||||||
if (p == 0)
|
|
||||||
p = le64toh(f->header->header_size);
|
|
||||||
else {
|
|
||||||
uint64_t sz;
|
|
||||||
|
|
||||||
r = journal_file_move_to_object(f, OBJECT_UNUSED, p, &tail);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
sz = le64toh(READ_NOW(tail->object.size));
|
|
||||||
if (sz > UINT64_MAX - sizeof(uint64_t) + 1)
|
|
||||||
return -EBADMSG;
|
|
||||||
|
|
||||||
sz = ALIGN64(sz);
|
|
||||||
if (p > UINT64_MAX - sz)
|
|
||||||
return -EBADMSG;
|
|
||||||
|
|
||||||
p += sz;
|
|
||||||
}
|
|
||||||
|
|
||||||
*ret_offset = p;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This may be called from a separate thread to prevent blocking the caller for the duration of fsync().
|
/* This may be called from a separate thread to prevent blocking the caller for the duration of fsync().
|
||||||
* As a result we use atomic operations on f->offline_state for inter-thread communications with
|
* As a result we use atomic operations on f->offline_state for inter-thread communications with
|
||||||
* journal_file_set_offline() and journal_file_set_online(). */
|
* journal_file_set_offline() and journal_file_set_online(). */
|
||||||
@ -157,25 +122,6 @@ static void journal_file_set_offline_internal(JournalFile *f) {
|
|||||||
|
|
||||||
f->header->state = f->archive ? STATE_ARCHIVED : STATE_OFFLINE;
|
f->header->state = f->archive ? STATE_ARCHIVED : STATE_OFFLINE;
|
||||||
(void) fsync(f->fd);
|
(void) fsync(f->fd);
|
||||||
|
|
||||||
if (f->archive) {
|
|
||||||
uint64_t p;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
/* truncate excess from the end of archives */
|
|
||||||
r = journal_file_tail_end(f, &p);
|
|
||||||
if (r < 0)
|
|
||||||
log_debug_errno(r, "Failed to determine end of tail object, ignoring: %m");
|
|
||||||
else {
|
|
||||||
/* arena_size can't exceed the file size, ensure it's updated before truncating */
|
|
||||||
f->header->arena_size = htole64(p - le64toh(f->header->header_size));
|
|
||||||
|
|
||||||
(void) fsync(f->fd);
|
|
||||||
|
|
||||||
if (ftruncate(f->fd, p) < 0)
|
|
||||||
log_debug_errno(errno, "Failed to truncate archive at end of tail object, ignoring: %m");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OFFLINE_OFFLINING:
|
case OFFLINE_OFFLINING:
|
||||||
@ -1108,7 +1054,7 @@ int journal_file_append_object(
|
|||||||
|
|
||||||
int r;
|
int r;
|
||||||
uint64_t p;
|
uint64_t p;
|
||||||
Object *o;
|
Object *tail, *o;
|
||||||
void *t;
|
void *t;
|
||||||
|
|
||||||
assert(f);
|
assert(f);
|
||||||
@ -1120,10 +1066,27 @@ int journal_file_append_object(
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = journal_file_tail_end(f, &p);
|
p = le64toh(f->header->tail_object_offset);
|
||||||
|
if (p == 0)
|
||||||
|
p = le64toh(f->header->header_size);
|
||||||
|
else {
|
||||||
|
uint64_t sz;
|
||||||
|
|
||||||
|
r = journal_file_move_to_object(f, OBJECT_UNUSED, p, &tail);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
sz = le64toh(READ_NOW(tail->object.size));
|
||||||
|
if (sz > UINT64_MAX - sizeof(uint64_t) + 1)
|
||||||
|
return -EBADMSG;
|
||||||
|
|
||||||
|
sz = ALIGN64(sz);
|
||||||
|
if (p > UINT64_MAX - sz)
|
||||||
|
return -EBADMSG;
|
||||||
|
|
||||||
|
p += sz;
|
||||||
|
}
|
||||||
|
|
||||||
r = journal_file_allocate(f, p, size);
|
r = journal_file_allocate(f, p, size);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
#include "netlink-util.h"
|
#include "netlink-util.h"
|
||||||
#include "networkd-manager.h"
|
#include "networkd-manager.h"
|
||||||
#include "networkd-queue.h"
|
#include "networkd-queue.h"
|
||||||
|
#include "networkd-setlink.h"
|
||||||
#include "nlmon.h"
|
#include "nlmon.h"
|
||||||
#include "path-lookup.h"
|
#include "path-lookup.h"
|
||||||
#include "siphash24.h"
|
#include "siphash24.h"
|
||||||
@ -550,7 +551,7 @@ static bool netdev_is_ready_to_create(NetDev *netdev, Link *link) {
|
|||||||
req = (Request) {
|
req = (Request) {
|
||||||
.link = link,
|
.link = link,
|
||||||
.type = REQUEST_TYPE_SET_LINK,
|
.type = REQUEST_TYPE_SET_LINK,
|
||||||
.set_link_operation = SET_LINK_MTU,
|
.set_link_operation_ptr = INT_TO_PTR(SET_LINK_MTU),
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ordered_set_contains(link->manager->request_queue, &req))
|
if (ordered_set_contains(link->manager->request_queue, &req))
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
#include "networkd-route.h"
|
#include "networkd-route.h"
|
||||||
#include "networkd-routing-policy-rule.h"
|
#include "networkd-routing-policy-rule.h"
|
||||||
#include "networkd-queue.h"
|
#include "networkd-queue.h"
|
||||||
|
#include "networkd-setlink.h"
|
||||||
|
|
||||||
static void request_free_object(RequestType type, void *object) {
|
static void request_free_object(RequestType type, void *object) {
|
||||||
switch(type) {
|
switch(type) {
|
||||||
@ -123,9 +124,10 @@ static void request_hash_func(const Request *req, struct siphash *state) {
|
|||||||
case REQUEST_TYPE_ROUTING_POLICY_RULE:
|
case REQUEST_TYPE_ROUTING_POLICY_RULE:
|
||||||
routing_policy_rule_hash_func(req->rule, state);
|
routing_policy_rule_hash_func(req->rule, state);
|
||||||
break;
|
break;
|
||||||
case REQUEST_TYPE_SET_LINK:
|
case REQUEST_TYPE_SET_LINK: {
|
||||||
siphash24_compress(&req->set_link_operation, sizeof(req->set_link_operation), state);
|
trivial_hash_func(req->set_link_operation_ptr, state);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case REQUEST_TYPE_UP_DOWN:
|
case REQUEST_TYPE_UP_DOWN:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -172,7 +174,7 @@ static int request_compare_func(const struct Request *a, const struct Request *b
|
|||||||
case REQUEST_TYPE_ROUTING_POLICY_RULE:
|
case REQUEST_TYPE_ROUTING_POLICY_RULE:
|
||||||
return routing_policy_rule_compare_func(a->rule, b->rule);
|
return routing_policy_rule_compare_func(a->rule, b->rule);
|
||||||
case REQUEST_TYPE_SET_LINK:
|
case REQUEST_TYPE_SET_LINK:
|
||||||
return CMP(a->set_link_operation, b->set_link_operation);
|
return trivial_compare_func(a->set_link_operation_ptr, b->set_link_operation_ptr);
|
||||||
case REQUEST_TYPE_UP_DOWN:
|
case REQUEST_TYPE_UP_DOWN:
|
||||||
return 0;
|
return 0;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@ -4,7 +4,6 @@
|
|||||||
#include "sd-event.h"
|
#include "sd-event.h"
|
||||||
|
|
||||||
#include "networkd-link.h"
|
#include "networkd-link.h"
|
||||||
#include "networkd-setlink.h"
|
|
||||||
|
|
||||||
typedef struct Address Address;
|
typedef struct Address Address;
|
||||||
typedef struct AddressLabel AddressLabel;
|
typedef struct AddressLabel AddressLabel;
|
||||||
@ -40,8 +39,6 @@ typedef enum RequestType {
|
|||||||
_REQUEST_TYPE_INVALID = -EINVAL,
|
_REQUEST_TYPE_INVALID = -EINVAL,
|
||||||
} RequestType;
|
} RequestType;
|
||||||
|
|
||||||
assert_cc(sizeof(SetLinkOperation) <= sizeof(void*));
|
|
||||||
|
|
||||||
typedef struct Request {
|
typedef struct Request {
|
||||||
Link *link;
|
Link *link;
|
||||||
RequestType type;
|
RequestType type;
|
||||||
@ -56,7 +53,7 @@ typedef struct Request {
|
|||||||
NextHop *nexthop;
|
NextHop *nexthop;
|
||||||
Route *route;
|
Route *route;
|
||||||
RoutingPolicyRule *rule;
|
RoutingPolicyRule *rule;
|
||||||
SetLinkOperation set_link_operation;
|
void *set_link_operation_ptr;
|
||||||
NetDev *netdev;
|
NetDev *netdev;
|
||||||
void *object;
|
void *object;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -10,8 +10,8 @@
|
|||||||
#include "networkd-link.h"
|
#include "networkd-link.h"
|
||||||
#include "networkd-manager.h"
|
#include "networkd-manager.h"
|
||||||
#include "networkd-queue.h"
|
#include "networkd-queue.h"
|
||||||
|
#include "networkd-setlink.h"
|
||||||
#include "string-table.h"
|
#include "string-table.h"
|
||||||
#include "sysctl-util.h"
|
|
||||||
|
|
||||||
static const char *const set_link_operation_table[_SET_LINK_OPERATION_MAX] = {
|
static const char *const set_link_operation_table[_SET_LINK_OPERATION_MAX] = {
|
||||||
[SET_LINK_ADDRESS_GENERATION_MODE] = "IPv6LL address generation mode",
|
[SET_LINK_ADDRESS_GENERATION_MODE] = "IPv6LL address generation mode",
|
||||||
@ -491,7 +491,7 @@ static bool link_is_ready_to_call_set_link(Request *req) {
|
|||||||
assert(req);
|
assert(req);
|
||||||
|
|
||||||
link = req->link;
|
link = req->link;
|
||||||
op = req->set_link_operation;
|
op = PTR_TO_INT(req->set_link_operation_ptr);
|
||||||
|
|
||||||
if (!IN_SET(link->state, LINK_STATE_INITIALIZED, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED))
|
if (!IN_SET(link->state, LINK_STATE_INITIALIZED, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED))
|
||||||
return false;
|
return false;
|
||||||
@ -572,23 +572,27 @@ static bool link_is_ready_to_call_set_link(Request *req) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int request_process_set_link(Request *req) {
|
int request_process_set_link(Request *req) {
|
||||||
|
SetLinkOperation op;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert(req);
|
assert(req);
|
||||||
assert(req->link);
|
assert(req->link);
|
||||||
assert(req->type == REQUEST_TYPE_SET_LINK);
|
assert(req->type == REQUEST_TYPE_SET_LINK);
|
||||||
assert(req->set_link_operation >= 0 && req->set_link_operation < _SET_LINK_OPERATION_MAX);
|
|
||||||
assert(req->netlink_handler);
|
assert(req->netlink_handler);
|
||||||
|
|
||||||
|
op = PTR_TO_INT(req->set_link_operation_ptr);
|
||||||
|
|
||||||
|
assert(op >= 0 && op < _SET_LINK_OPERATION_MAX);
|
||||||
|
|
||||||
if (!link_is_ready_to_call_set_link(req))
|
if (!link_is_ready_to_call_set_link(req))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
r = link_configure(req->link, req->set_link_operation, req->userdata, req->netlink_handler);
|
r = link_configure(req->link, op, req->userdata, req->netlink_handler);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(req->link, r, "Failed to set %s: %m",
|
return log_link_error_errno(req->link, r, "Failed to set %s: %m",
|
||||||
set_link_operation_to_string(req->set_link_operation));
|
set_link_operation_to_string(op));
|
||||||
|
|
||||||
if (req->set_link_operation == SET_LINK_FLAGS)
|
if (op == SET_LINK_FLAGS)
|
||||||
req->link->set_flags_messages++;
|
req->link->set_flags_messages++;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@ -21,6 +21,10 @@ typedef enum SetLinkOperation {
|
|||||||
_SET_LINK_OPERATION_INVALID = -EINVAL,
|
_SET_LINK_OPERATION_INVALID = -EINVAL,
|
||||||
} SetLinkOperation;
|
} SetLinkOperation;
|
||||||
|
|
||||||
|
/* SetLinkOperation is casted to int, then stored in void* with INT_TO_PTR(). */
|
||||||
|
assert_cc(sizeof(SetLinkOperation) <= sizeof(void*));
|
||||||
|
assert_cc(sizeof(SetLinkOperation) <= sizeof(int));
|
||||||
|
|
||||||
int link_request_to_set_addrgen_mode(Link *link);
|
int link_request_to_set_addrgen_mode(Link *link);
|
||||||
int link_request_to_set_bond(Link *link);
|
int link_request_to_set_bond(Link *link);
|
||||||
int link_request_to_set_bridge(Link *link);
|
int link_request_to_set_bridge(Link *link);
|
||||||
|
|||||||
@ -691,7 +691,6 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
|
|||||||
"open_by_handle_at\0"
|
"open_by_handle_at\0"
|
||||||
"pivot_root\0"
|
"pivot_root\0"
|
||||||
"quotactl\0"
|
"quotactl\0"
|
||||||
"quotactl_path\0"
|
|
||||||
"setdomainname\0"
|
"setdomainname\0"
|
||||||
"setfsuid\0"
|
"setfsuid\0"
|
||||||
"setfsuid32\0"
|
"setfsuid32\0"
|
||||||
|
|||||||
@ -1,6 +1,11 @@
|
|||||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#if HAVE_SYS_SDT_H
|
||||||
|
#define SDT_USE_VARIADIC
|
||||||
|
#include <sys/sdt.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "sd-device.h"
|
#include "sd-device.h"
|
||||||
|
|
||||||
#include "time-util.h"
|
#include "time-util.h"
|
||||||
@ -46,3 +51,30 @@ int udev_resolve_subsys_kernel(const char *string, char *result, size_t maxsize,
|
|||||||
|
|
||||||
int udev_queue_is_empty(void);
|
int udev_queue_is_empty(void);
|
||||||
int udev_queue_init(void);
|
int udev_queue_init(void);
|
||||||
|
|
||||||
|
#if HAVE_SYS_SDT_H
|
||||||
|
|
||||||
|
/* Each trace point can have different number of additional arguments. Note that when the macro is used only
|
||||||
|
* additional arguments are listed in the macro invocation!
|
||||||
|
*
|
||||||
|
* Default arguments for each trace point are as follows:
|
||||||
|
* - arg0 - action
|
||||||
|
* - arg1 - sysname
|
||||||
|
* - arg2 - syspath
|
||||||
|
* - arg3 - subsystem
|
||||||
|
*/
|
||||||
|
#define DEVICE_TRACE_POINT(name, dev, ...) \
|
||||||
|
do { \
|
||||||
|
PROTECT_ERRNO; \
|
||||||
|
const char *_n = NULL, *_p = NULL, *_s = NULL; \
|
||||||
|
sd_device *_d = (dev); \
|
||||||
|
sd_device_action_t _a = _SD_DEVICE_ACTION_INVALID; \
|
||||||
|
(void) sd_device_get_action(_d, &_a); \
|
||||||
|
(void) sd_device_get_sysname(_d, &_n); \
|
||||||
|
(void) sd_device_get_syspath(_d, &_p); \
|
||||||
|
(void) sd_device_get_subsystem(_d, &_s); \
|
||||||
|
STAP_PROBEV(udev, name, device_action_to_string(_a), _n, _p, _s __VA_OPT__(,) __VA_ARGS__);\
|
||||||
|
} while(false);
|
||||||
|
#else
|
||||||
|
#define DEVICE_TRACE_POINT(name, dev, ...) ((void) 0)
|
||||||
|
#endif
|
||||||
|
|||||||
@ -63,7 +63,9 @@ int sd_id128_get_boot_app_specific(sd_id128_t app_id, sd_id128_t *ret);
|
|||||||
#define SD_ID128_FORMAT_STR "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
|
#define SD_ID128_FORMAT_STR "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
|
||||||
#define SD_ID128_FORMAT_VAL(x) (x).bytes[0], (x).bytes[1], (x).bytes[2], (x).bytes[3], (x).bytes[4], (x).bytes[5], (x).bytes[6], (x).bytes[7], (x).bytes[8], (x).bytes[9], (x).bytes[10], (x).bytes[11], (x).bytes[12], (x).bytes[13], (x).bytes[14], (x).bytes[15]
|
#define SD_ID128_FORMAT_VAL(x) (x).bytes[0], (x).bytes[1], (x).bytes[2], (x).bytes[3], (x).bytes[4], (x).bytes[5], (x).bytes[6], (x).bytes[7], (x).bytes[8], (x).bytes[9], (x).bytes[10], (x).bytes[11], (x).bytes[12], (x).bytes[13], (x).bytes[14], (x).bytes[15]
|
||||||
|
|
||||||
/* Like SD_ID128_FORMAT_STR, but formats as UUID, not in plain format */
|
/* Like SD_ID128_FORMAT_STR, but formats as UUID, not in plain format (Strictly Big Endian byte order,
|
||||||
|
* i.e. treats everything as RFC4122 Variant 1 UUIDs, even if variant says otherwise, but matching other
|
||||||
|
* Linux userspace behaviour.) */
|
||||||
#define SD_ID128_UUID_FORMAT_STR "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
|
#define SD_ID128_UUID_FORMAT_STR "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
|
||||||
|
|
||||||
#define SD_ID128_CONST_STR(x) \
|
#define SD_ID128_CONST_STR(x) \
|
||||||
|
|||||||
@ -805,10 +805,18 @@ static void test_load_syscall_filter_set_raw(void) {
|
|||||||
assert_se(s = hashmap_new(NULL));
|
assert_se(s = hashmap_new(NULL));
|
||||||
#if defined __NR_access && __NR_access >= 0
|
#if defined __NR_access && __NR_access >= 0
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_access + 1), INT_TO_PTR(-1)) >= 0);
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_access + 1), INT_TO_PTR(-1)) >= 0);
|
||||||
#else
|
log_debug("has access()");
|
||||||
|
#endif
|
||||||
|
#if defined __NR_faccessat && __NR_faccessat >= 0
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat + 1), INT_TO_PTR(-1)) >= 0);
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat + 1), INT_TO_PTR(-1)) >= 0);
|
||||||
|
log_debug("has faccessat()");
|
||||||
|
#endif
|
||||||
|
#if defined __NR_faccessat2 && __NR_faccessat2 >= 0
|
||||||
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat2 + 1), INT_TO_PTR(-1)) >= 0);
|
||||||
|
log_debug("has faccessat2()");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
assert_se(!hashmap_isempty(s));
|
||||||
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUCLEAN), true) >= 0);
|
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUCLEAN), true) >= 0);
|
||||||
|
|
||||||
assert_se(access("/", F_OK) < 0);
|
assert_se(access("/", F_OK) < 0);
|
||||||
@ -816,14 +824,16 @@ static void test_load_syscall_filter_set_raw(void) {
|
|||||||
|
|
||||||
assert_se(poll(NULL, 0, 0) == 0);
|
assert_se(poll(NULL, 0, 0) == 0);
|
||||||
|
|
||||||
s = hashmap_free(s);
|
hashmap_clear(s);
|
||||||
|
|
||||||
assert_se(s = hashmap_new(NULL));
|
|
||||||
#if defined __NR_access && __NR_access >= 0
|
#if defined __NR_access && __NR_access >= 0
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_access + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_access + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
||||||
#else
|
#endif
|
||||||
|
#if defined __NR_faccessat && __NR_faccessat >= 0
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined __NR_faccessat2 && __NR_faccessat2 >= 0
|
||||||
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat2 + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUCLEAN), true) >= 0);
|
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUCLEAN), true) >= 0);
|
||||||
|
|
||||||
@ -832,15 +842,21 @@ static void test_load_syscall_filter_set_raw(void) {
|
|||||||
|
|
||||||
assert_se(poll(NULL, 0, 0) == 0);
|
assert_se(poll(NULL, 0, 0) == 0);
|
||||||
|
|
||||||
s = hashmap_free(s);
|
hashmap_clear(s);
|
||||||
|
|
||||||
assert_se(s = hashmap_new(NULL));
|
|
||||||
#if defined __NR_poll && __NR_poll >= 0
|
#if defined __NR_poll && __NR_poll >= 0
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_poll + 1), INT_TO_PTR(-1)) >= 0);
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_poll + 1), INT_TO_PTR(-1)) >= 0);
|
||||||
#elif defined __NR_ppoll
|
log_debug("has poll()");
|
||||||
|
#endif
|
||||||
|
#if defined __NR_ppoll && __NR_ppoll >= 0
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(-1)) >= 0);
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(-1)) >= 0);
|
||||||
|
log_debug("has ppoll()");
|
||||||
|
#endif
|
||||||
|
#if defined __NR_ppoll_time64 && __NR_ppoll_time64 >= 0
|
||||||
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll_time64 + 1), INT_TO_PTR(-1)) >= 0);
|
||||||
|
log_debug("has ppoll_time64()");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
assert_se(!hashmap_isempty(s));
|
||||||
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUNATCH), true) >= 0);
|
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUNATCH), true) >= 0);
|
||||||
|
|
||||||
assert_se(access("/", F_OK) < 0);
|
assert_se(access("/", F_OK) < 0);
|
||||||
@ -849,15 +865,16 @@ static void test_load_syscall_filter_set_raw(void) {
|
|||||||
assert_se(poll(NULL, 0, 0) < 0);
|
assert_se(poll(NULL, 0, 0) < 0);
|
||||||
assert_se(errno == EUNATCH);
|
assert_se(errno == EUNATCH);
|
||||||
|
|
||||||
s = hashmap_free(s);
|
hashmap_clear(s);
|
||||||
|
|
||||||
assert_se(s = hashmap_new(NULL));
|
|
||||||
#if defined __NR_poll && __NR_poll >= 0
|
#if defined __NR_poll && __NR_poll >= 0
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_poll + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_poll + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
||||||
#elif defined __NR_ppoll
|
#endif
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(-1)) >= 0);
|
#if defined __NR_ppoll && __NR_ppoll >= 0
|
||||||
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined __NR_ppoll_time64 && __NR_ppoll_time64 >= 0
|
||||||
|
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll_time64 + 1), INT_TO_PTR(EILSEQ)) >= 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUNATCH), true) >= 0);
|
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUNATCH), true) >= 0);
|
||||||
|
|
||||||
|
|||||||
@ -603,6 +603,8 @@ static int on_spawn_timeout(sd_event_source *s, uint64_t usec, void *userdata) {
|
|||||||
|
|
||||||
assert(spawn);
|
assert(spawn);
|
||||||
|
|
||||||
|
DEVICE_TRACE_POINT(spawn_timeout, spawn->device, spawn->cmd);
|
||||||
|
|
||||||
kill_and_sigcont(spawn->pid, spawn->timeout_signal);
|
kill_and_sigcont(spawn->pid, spawn->timeout_signal);
|
||||||
|
|
||||||
log_device_error(spawn->device, "Spawned process '%s' ["PID_FMT"] timed out after %s, killing",
|
log_device_error(spawn->device, "Spawned process '%s' ["PID_FMT"] timed out after %s, killing",
|
||||||
@ -648,6 +650,8 @@ static int on_spawn_sigchld(sd_event_source *s, const siginfo_t *si, void *userd
|
|||||||
log_device_error(spawn->device, "Process '%s' failed due to unknown reason.", spawn->cmd);
|
log_device_error(spawn->device, "Process '%s' failed due to unknown reason.", spawn->cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEVICE_TRACE_POINT(spawn_exit, spawn->device, spawn->cmd);
|
||||||
|
|
||||||
sd_event_exit(sd_event_source_get_event(s), ret);
|
sd_event_exit(sd_event_source_get_event(s), ret);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -785,6 +789,8 @@ int udev_event_spawn(UdevEvent *event,
|
|||||||
(void) close_all_fds(NULL, 0);
|
(void) close_all_fds(NULL, 0);
|
||||||
(void) rlimit_nofile_safe();
|
(void) rlimit_nofile_safe();
|
||||||
|
|
||||||
|
DEVICE_TRACE_POINT(spawn_exec, event->dev, cmd);
|
||||||
|
|
||||||
execve(argv[0], argv, envp);
|
execve(argv[0], argv, envp);
|
||||||
_exit(EXIT_FAILURE);
|
_exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
@ -1014,10 +1020,14 @@ int udev_event_execute_rules(
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEVICE_TRACE_POINT(rules_start, dev);
|
||||||
|
|
||||||
r = udev_rules_apply_to_event(rules, event, timeout_usec, timeout_signal, properties_list);
|
r = udev_rules_apply_to_event(rules, event, timeout_usec, timeout_signal, properties_list);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_device_debug_errno(dev, r, "Failed to apply udev rules: %m");
|
return log_device_debug_errno(dev, r, "Failed to apply udev rules: %m");
|
||||||
|
|
||||||
|
DEVICE_TRACE_POINT(rules_finished, dev);
|
||||||
|
|
||||||
r = rename_netif(event);
|
r = rename_netif(event);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
#include "udev-builtin.h"
|
#include "udev-builtin.h"
|
||||||
#include "udev-event.h"
|
#include "udev-event.h"
|
||||||
#include "udev-rules.h"
|
#include "udev-rules.h"
|
||||||
|
#include "udev-util.h"
|
||||||
#include "user-util.h"
|
#include "user-util.h"
|
||||||
#include "virt.h"
|
#include "virt.h"
|
||||||
|
|
||||||
@ -2261,6 +2262,9 @@ static int udev_rule_apply_line_to_event(
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
event->esc = ESCAPE_UNSET;
|
event->esc = ESCAPE_UNSET;
|
||||||
|
|
||||||
|
DEVICE_TRACE_POINT(rules_apply_line, event->dev, line->rule_file->filename, line->line_number);
|
||||||
|
|
||||||
LIST_FOREACH_SAFE(tokens, token, next_token, line->tokens) {
|
LIST_FOREACH_SAFE(tokens, token, next_token, line->tokens) {
|
||||||
line->current_token = token;
|
line->current_token = token;
|
||||||
|
|
||||||
|
|||||||
@ -617,6 +617,8 @@ static int worker_spawn(Manager *manager, struct event *event) {
|
|||||||
return log_error_errno(r, "Failed to fork() worker: %m");
|
return log_error_errno(r, "Failed to fork() worker: %m");
|
||||||
}
|
}
|
||||||
if (r == 0) {
|
if (r == 0) {
|
||||||
|
DEVICE_TRACE_POINT(worker_spawned, event->dev, getpid());
|
||||||
|
|
||||||
/* Worker process */
|
/* Worker process */
|
||||||
r = worker_main(manager, worker_monitor, sd_device_ref(event->dev));
|
r = worker_main(manager, worker_monitor, sd_device_ref(event->dev));
|
||||||
log_close();
|
log_close();
|
||||||
@ -1045,6 +1047,8 @@ static int on_uevent(sd_device_monitor *monitor, sd_device *dev, void *userdata)
|
|||||||
|
|
||||||
assert(manager);
|
assert(manager);
|
||||||
|
|
||||||
|
DEVICE_TRACE_POINT(kernel_uevent_received, dev);
|
||||||
|
|
||||||
device_ensure_usec_initialized(dev, NULL);
|
device_ensure_usec_initialized(dev, NULL);
|
||||||
|
|
||||||
r = event_queue_insert(manager, dev);
|
r = event_queue_insert(manager, dev);
|
||||||
@ -1180,6 +1184,8 @@ static int synthesize_change_one(sd_device *dev, sd_device *target) {
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_device_debug_errno(target, r, "Failed to trigger 'change' uevent: %m");
|
return log_device_debug_errno(target, r, "Failed to trigger 'change' uevent: %m");
|
||||||
|
|
||||||
|
DEVICE_TRACE_POINT(synthetic_change_event, dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user