mirror of
https://github.com/systemd/systemd
synced 2025-10-03 18:54:45 +02:00
Compare commits
23 Commits
8b2620ea8c
...
97e535c724
Author | SHA1 | Date | |
---|---|---|---|
![]() |
97e535c724 | ||
![]() |
16e6a7010f | ||
![]() |
499c8514ea | ||
![]() |
7c382f0b7d | ||
![]() |
fa1ca5f409 | ||
![]() |
42d7904284 | ||
![]() |
85f3bd23da | ||
![]() |
26ac511a7e | ||
![]() |
8b596d51a9 | ||
![]() |
1d5484aa67 | ||
![]() |
798445ab84 | ||
![]() |
420297c9e1 | ||
![]() |
34507fa9e9 | ||
![]() |
a8136f1bc0 | ||
![]() |
4fc8a70d9f | ||
![]() |
9f0840e421 | ||
![]() |
403db47069 | ||
![]() |
c91ebcdbd1 | ||
![]() |
d5630d2795 | ||
![]() |
326152af4d | ||
![]() |
b8700c621a | ||
![]() |
a8304ca1b2 | ||
![]() |
beca342dba |
3
TODO
3
TODO
@ -39,9 +39,6 @@ Features:
|
||||
time-based policy, so that the verification key can remain on host and ve
|
||||
validated via TPM.
|
||||
|
||||
* sd-event: port to new kernel API epoll_wait2() (new in 5.11), to get more
|
||||
accurate wait timeouts
|
||||
|
||||
* sd-boot: define a drop-in dir in the ESP that may contain X.509
|
||||
certificates. If the firmware is detected to be in setup mode, automatically
|
||||
enroll them as PK/KEK/db, turn off setup mode and proceed. Optionally,
|
||||
|
@ -1,6 +1,9 @@
|
||||
<?xml version='1.0'?> <!--*-nxml-*-->
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
|
||||
<!ENTITY % entities SYSTEM "custom-entities.ent" >
|
||||
%entities;
|
||||
]>
|
||||
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
|
||||
|
||||
<refentry id="hostnamectl" conditional='ENABLE_HOSTNAMED'
|
||||
@ -76,9 +79,13 @@
|
||||
still following the validity rules of the specific name. This simplification of the hostname string is not done
|
||||
if only the transient and/or static hostnames are set, and the pretty hostname is left untouched.</para>
|
||||
|
||||
<para>Pass the empty string <literal></literal> as the
|
||||
hostname to reset the selected hostnames to their default
|
||||
(usually <literal>localhost</literal>).</para></listitem>
|
||||
<para>The static and transient hostnames must each be either a single DNS label (a string composed of
|
||||
7-bit ASCII lower-case characters and no spaces or dots, limited to the format allowed for DNS domain
|
||||
name labels), or a sequence of such labels separated by single dots that forms a valid DNS FQDN. The
|
||||
hostname must be at most 64 characters, which is a Linux limitation (DNS allows longer names).</para>
|
||||
|
||||
<para>Pass the empty string <literal></literal> as the hostname to reset the selected hostnames to
|
||||
their default (usually <literal>&FALLBACK_HOSTNAME;</literal>).</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
|
@ -325,7 +325,8 @@
|
||||
present and no other configuration source specifies the hostname. Must be either a single DNS label
|
||||
(a string composed of 7-bit ASCII lower-case characters and no spaces or dots, limited to the format
|
||||
allowed for DNS domain name labels), or a sequence of such labels separated by single dots that forms
|
||||
a valid DNS FQDN. The total length must be at most 64 characters.</para>
|
||||
a valid DNS FQDN. The hostname must be at most 64 characters, which is a Linux limitation (DNS allows
|
||||
longer names).</para>
|
||||
|
||||
<para>See
|
||||
<citerefentry><refentrytitle>org.freedesktop.hostname1</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
|
@ -74,7 +74,7 @@
|
||||
should be read. See the table below for a complete list of allowed arguments and their types. Note that,
|
||||
if the basic type is a pointer (e.g., <type>const char *</type> in the case of a string), the argument is
|
||||
a pointer to a pointer, and also the pointer value that is written is only borrowed and the contents must
|
||||
be copied if they are to be used after the end of the messages lifetime. If the type is
|
||||
be copied if they are to be used after the end of the message's lifetime. If the type is
|
||||
<literal>h</literal> (UNIX file descriptor), the descriptor is not duplicated by this call and the
|
||||
returned descriptor remains in possession of the message object, and needs to be duplicated by the caller
|
||||
in order to keep an open reference to it after the message object is freed.</para>
|
||||
|
@ -58,12 +58,12 @@
|
||||
<parameter>type</parameter> is <constant>'s'</constant>, the object passed in <parameter>p</parameter>
|
||||
should have type <type>const char **</type>. Note that, if the basic type is a pointer (e.g.,
|
||||
<type>const char *</type> in the case of a string), the pointer is only borrowed and the contents must
|
||||
be copied if they are to be used after the end of the messages lifetime. Similarly, during the lifetime
|
||||
of such a pointer, the message must not be modified. If <parameter>type</parameter> is
|
||||
be copied if they are to be used after the end of the message's lifetime. Similarly, during the
|
||||
lifetime of such a pointer, the message must not be modified. If <parameter>type</parameter> is
|
||||
<constant>'h'</constant> (UNIX file descriptor), the descriptor is not duplicated by this call and the
|
||||
returned descriptor remains in possession of the message object, and needs to be duplicated by the caller
|
||||
in order to keep an open reference to it after the message object is freed (for example by calling
|
||||
<literal>fcntl(fd, FD_DUPFD_CLOEXEC, 3)</literal>). See the table below for a complete list of
|
||||
returned descriptor remains in possession of the message object, and needs to be duplicated by the
|
||||
caller in order to keep an open reference to it after the message object is freed (for example by
|
||||
calling <literal>fcntl(fd, FD_DUPFD_CLOEXEC, 3)</literal>). See the table below for a complete list of
|
||||
allowed types.
|
||||
</para>
|
||||
|
||||
|
@ -181,13 +181,13 @@
|
||||
<entry>A virtual tunnel interface like vti/vti6 but with several advantages.</entry></row>
|
||||
|
||||
<row><entry><varname>ifb</varname></entry>
|
||||
<entry> The Intermediate Functional Block (ifb) pseudo network interface acts as a QoS concentrator for multiple different sources of traffic.</entry></row>
|
||||
<entry>The Intermediate Functional Block (ifb) pseudo network interface acts as a QoS concentrator for multiple different sources of traffic.</entry></row>
|
||||
|
||||
<row><entry><varname>bareudp</varname></entry>
|
||||
<entry> Bare UDP tunnels provide a generic L3 encapsulation support for tunnelling different L3 protocols like MPLS, IP etc. inside of an UDP tunnel.</entry></row>
|
||||
<entry>Bare UDP tunnels provide a generic L3 encapsulation support for tunnelling different L3 protocols like MPLS, IP etc. inside of an UDP tunnel.</entry></row>
|
||||
|
||||
<row><entry><varname>batadv</varname></entry>
|
||||
<entry> (<ulink url="https://www.open-mesh.org/projects/open-mesh/wiki">B.A.T.M.A.N. Advanced</ulink>) is a routing protocol for multi-hop mobile ad hoc networks which operates on layer2.</entry></row>
|
||||
<entry><ulink url="https://www.open-mesh.org/projects/open-mesh/wiki">B.A.T.M.A.N. Advanced</ulink> is a routing protocol for multi-hop mobile ad-hoc networks which operates on layer 2.</entry></row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
@ -63,6 +63,25 @@
|
||||
url="https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New
|
||||
Control Group Interfaces</ulink> for an introduction on how to make
|
||||
use of resource control APIs from programs.</para>
|
||||
|
||||
<refsect2>
|
||||
<title>Setting resource controls for a group of related units</title>
|
||||
|
||||
<para>As described in
|
||||
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>, the
|
||||
settings listed here may be set through the main file of a unit and drop-in snippets in
|
||||
<filename index="false">*.d/</filename> directories. The list of directories searched for drop-ins
|
||||
includes names formed by repeatedly truncating the unit name after all dashes. This is particularly
|
||||
convenient to set resource limits for a group of units with similar names.</para>
|
||||
|
||||
<para>For example, every user gets their own slice
|
||||
<filename>user-<replaceable>nnn</replaceable>.slice</filename>. Drop-ins with local configuration that
|
||||
affect user 1000 may be placed in
|
||||
<filename index="false">/etc/systemd/system/user-1000.slice</filename>,
|
||||
<filename index="false">/etc/systemd/system/user-1000.slice.d/*.conf</filename>, but also
|
||||
<filename index="false">/etc/systemd/system/user-.slice.d/*.conf</filename>. This last directory
|
||||
applies to all user slices.</para>
|
||||
</refsect2>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
@ -918,31 +937,30 @@ DeviceAllow=/dev/loop-control
|
||||
<term><varname>ManagedOOMPreference=none|avoid|omit</varname></term>
|
||||
|
||||
<listitem>
|
||||
<para>Allows deprioritizing or omitting this unit's cgroup as a candidate when <command>systemd-oomd</command>
|
||||
needs to act. Requires support for extended attributes (see
|
||||
<para>Allows deprioritizing or omitting this unit's cgroup as a candidate when
|
||||
<command>systemd-oomd</command> needs to act. Requires support for extended attributes (see
|
||||
<citerefentry project='man-pages'><refentrytitle>xattr</refentrytitle><manvolnum>7</manvolnum></citerefentry>)
|
||||
in order to use <option>avoid</option> or <option>omit</option>. Additionally, <command>systemd-oomd</command>
|
||||
will ignore these extended attributes if the unit's cgroup is not owned by the root user.</para>
|
||||
in order to use <option>avoid</option> or <option>omit</option>. Additionally,
|
||||
<command>systemd-oomd</command> will ignore these extended attributes if the unit's cgroup is not
|
||||
owned by the root user.</para>
|
||||
|
||||
<para>If this property is set to <option>avoid</option>, the service manager will set the
|
||||
"user.oomd_avoid" extended attribute on the unit's cgroup to "1". If <command>systemd-oomd</command> sees
|
||||
this extended attribute on a cgroup set to "1" when choosing between candidates, it will only select the
|
||||
cgroup with "user.oomd_avoid" if there are no other viable candidates.</para>
|
||||
<para>If this property is set to <option>avoid</option>, the service manager will convey this to
|
||||
<command>systemd-oomd</command>, which will only select this cgroup if there are no other viable
|
||||
candidates.</para>
|
||||
|
||||
<para>If this property is set to <option>omit</option>, the service manager will set the "user.oomd_omit"
|
||||
extended attribute on the unit's cgroup to "1". If <command>systemd-oomd</command> sees the this extended
|
||||
attribute on the cgroup set to "1", it will ignore the cgroup as a candidate and will not perform any actions
|
||||
on the cgroup.</para>
|
||||
<para>If this property is set to <option>omit</option>, the service manager will convey this to
|
||||
<command>systemd-oomd</command>, which will ignore this cgroup as a candidate and will not perform
|
||||
any actions on it.</para>
|
||||
|
||||
<para>It is recommended to use <option>avoid</option> and <option>omit</option> sparingly as it can adversely
|
||||
affect <command>systemd-oomd</command>'s kill behavior. Also note that these extended attributes are not
|
||||
applied recursively to cgroups under this unit's cgroup.</para>
|
||||
<para>It is recommended to use <option>avoid</option> and <option>omit</option> sparingly, as it
|
||||
can adversely affect <command>systemd-oomd</command>'s kill behavior. Also note that these extended
|
||||
attributes are not applied recursively to cgroups under this unit's cgroup.</para>
|
||||
|
||||
<para>Defaults to <option>none</option> which means no extended attributes will be set and systemd-oomd will
|
||||
sort this unit's cgroup as defined in
|
||||
<para>Defaults to <option>none</option> which means <command>systemd-oomd</command> will rank this
|
||||
unit's cgroup as defined in
|
||||
<citerefentry><refentrytitle>systemd-oomd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
and <citerefentry><refentrytitle>oomd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> (if this
|
||||
unit's cgroup becomes a candidate).</para>
|
||||
and <citerefentry><refentrytitle>oomd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
@ -489,11 +489,10 @@
|
||||
Services After the Network is up</ulink> for more
|
||||
information.</para>
|
||||
|
||||
<para>All mount units for remote network file systems
|
||||
automatically pull in this unit, and order themselves after
|
||||
it. Note that networking daemons that simply provide
|
||||
functionality to other hosts generally do not need to pull
|
||||
this in.</para>
|
||||
<para>All mount units for remote network file systems automatically pull in this unit, and order
|
||||
themselves after it. Note that networking daemons that simply <emphasis>provide</emphasis>
|
||||
functionality to other hosts (as opposed to <emphasis>consume</emphasis> functionality of other
|
||||
hosts) generally do not need to pull this in.</para>
|
||||
|
||||
<para>systemd automatically adds dependencies of type <varname>Wants=</varname> and
|
||||
<varname>After=</varname> for this target unit to all SysV init script service units
|
||||
@ -949,20 +948,29 @@
|
||||
<varlistentry>
|
||||
<term><filename>network.target</filename></term>
|
||||
<listitem>
|
||||
<para>This unit is supposed to indicate when network
|
||||
functionality is available, but it is only very weakly
|
||||
defined what that is supposed to mean, with one exception:
|
||||
at shutdown, a unit that is ordered after
|
||||
<filename>network.target</filename> will be stopped before
|
||||
the network — to whatever level it might be set up then —
|
||||
is shut down. It is hence useful when writing service files
|
||||
that require network access on shutdown, which should order
|
||||
themselves after this target, but not pull it in. Also see
|
||||
<ulink url="https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running
|
||||
Services After the Network is up</ulink> for more
|
||||
information. Also see
|
||||
<filename>network-online.target</filename> described
|
||||
above.</para>
|
||||
<para>This unit is supposed to indicate when network functionality is available, but it is only
|
||||
very weakly defined what that is supposed to mean. However, the following should apply at
|
||||
minimum:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>At start-up, any configured synthetic network devices (i.e. not physical ones
|
||||
that require hardware to show up and be probed, but virtual ones like bridge devices and
|
||||
similar which are created programmatically) that do not depend on any underlying hardware
|
||||
should be allocated by the time this target is reached. It is not necessary for these
|
||||
interfaces to also have completed IP level configuration by the time
|
||||
<filename>network.target</filename> is reached.</para></listitem>
|
||||
|
||||
<listitem><para>At shutdown, a unit that is ordered after <filename>network.target</filename>
|
||||
will be stopped before the network — to whatever level it might be set up by then — is shut
|
||||
down. It is hence useful when writing service files that require network access on shutdown,
|
||||
which should order themselves after this target, but not pull it in. Also see <ulink
|
||||
url="https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running Services After
|
||||
the Network is up</ulink> for more information.</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>It must emphasized that at start-up there's no guarantee that hardware-based devices have
|
||||
shown up by the time this target is reached, or even acquired complete IP configuration. For that
|
||||
purpose use <filename>network-online.target</filename> as described above.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
@ -1247,18 +1255,18 @@
|
||||
<para><literal>gnome-session.target</literal> pulls in Nautilus as top-level service:</para>
|
||||
|
||||
<programlisting>[Unit]
|
||||
Description=User systemd services for GNOME graphical session
|
||||
Wants=nautilus.service
|
||||
BindsTo=graphical-session.target</programlisting>
|
||||
Description=User systemd services for GNOME graphical session
|
||||
Wants=nautilus.service
|
||||
BindsTo=graphical-session.target</programlisting>
|
||||
|
||||
<para><literal>nautilus.service</literal> gets stopped when the session stops:</para>
|
||||
|
||||
<programlisting>[Unit]
|
||||
Description=Render the desktop icons with Nautilus
|
||||
PartOf=graphical-session.target
|
||||
Description=Render the desktop icons with Nautilus
|
||||
PartOf=graphical-session.target
|
||||
|
||||
[Service]
|
||||
…</programlisting>
|
||||
[Service]
|
||||
…</programlisting>
|
||||
</example>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
@ -190,8 +190,8 @@
|
||||
headers. For instantiated units, this logic will first look for the instance <literal>.d/</literal> subdirectory
|
||||
(e.g. <literal>foo@bar.service.d/</literal>) and read its <literal>.conf</literal> files, followed by the template
|
||||
<literal>.d/</literal> subdirectory (e.g. <literal>foo@.service.d/</literal>) and the <literal>.conf</literal>
|
||||
files there. Moreover for units names containing dashes (<literal>-</literal>), the set of directories generated by
|
||||
truncating the unit name after all dashes is searched too. Specifically, for a unit name
|
||||
files there. Moreover for unit names containing dashes (<literal>-</literal>), the set of directories generated by
|
||||
repeatedly truncating the unit name after all dashes is searched too. Specifically, for a unit name
|
||||
<filename>foo-bar-baz.service</filename> not only the regular drop-in directory
|
||||
<filename>foo-bar-baz.service.d/</filename> is searched but also both <filename>foo-bar-.service.d/</filename> and
|
||||
<filename>foo-.service.d/</filename>. This is useful for defining common drop-ins for a set of related units, whose
|
||||
|
@ -47,54 +47,59 @@
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>NTP=</varname></term>
|
||||
<listitem><para>A space-separated list of NTP server host
|
||||
names or IP addresses. During runtime this list is combined
|
||||
with any per-interface NTP servers acquired from
|
||||
<listitem><para>A space-separated list of NTP server host names or IP addresses. During runtime this
|
||||
list is combined with any per-interface NTP servers acquired from
|
||||
<citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
|
||||
systemd-timesyncd will contact all configured system or
|
||||
per-interface servers in turn until one is found that
|
||||
responds. When the empty string is assigned, the list of
|
||||
NTP servers is reset, and all assignments prior to this one
|
||||
will have no effect. This setting defaults to an empty
|
||||
list.</para></listitem>
|
||||
<command>systemd-timesyncd</command> will contact all configured system or per-interface servers in
|
||||
turn, until one responds. When the empty string is assigned, the list of NTP servers is reset, and
|
||||
all prior assignments will have no effect. This setting defaults to an empty list.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>FallbackNTP=</varname></term>
|
||||
<listitem><para>A space-separated list of NTP server host
|
||||
names or IP addresses to be used as the fallback NTP servers.
|
||||
Any per-interface NTP servers obtained from
|
||||
<listitem><para>A space-separated list of NTP server host names or IP addresses to be used as the
|
||||
fallback NTP servers. Any per-interface NTP servers obtained from
|
||||
<citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
take precedence over this setting, as do any servers set via
|
||||
<varname>NTP=</varname> above. This setting is hence only used
|
||||
if no other NTP server information is known. When the empty
|
||||
string is assigned, the list of NTP servers is reset,
|
||||
and all assignments prior to this one will have no effect.
|
||||
If this option is not given, a compiled-in list of NTP servers
|
||||
is used instead.</para></listitem>
|
||||
take precedence over this setting, as do any servers set via <varname>NTP=</varname> above. This
|
||||
setting is hence only relevant if no other NTP server information is known. When the empty string is
|
||||
assigned, the list of NTP servers is reset, and all prior assignments will have no effect. If this
|
||||
option is not given, a compiled-in list of NTP servers is used.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>RootDistanceMaxSec=</varname></term>
|
||||
<listitem><para>Maximum acceptable root distance. Takes a time value (in seconds).
|
||||
<listitem><para>Maximum acceptable root distance, i.e. the maximum estimated time required for a
|
||||
packet to travel to the server we are connected to from the server with the reference clock. If
|
||||
the current server does not satisfy this limit, <command>systemd-timesyncd</command> will switch
|
||||
to a different server.</para>
|
||||
|
||||
<para>Takes a time value. The default unit is seconds, but other units may be specified, see
|
||||
<citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
Defaults to 5 seconds.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>PollIntervalMinSec=</varname></term>
|
||||
<term><varname>PollIntervalMaxSec=</varname></term>
|
||||
<listitem><para>The minimum and maximum poll intervals for NTP messages.
|
||||
Each setting takes a time value (in seconds).
|
||||
<varname>PollIntervalMinSec=</varname> must not be smaller than 16 seconds.
|
||||
<varname>PollIntervalMaxSec=</varname> must be larger than <varname>PollIntervalMinSec=</varname>.
|
||||
<varname>PollIntervalMinSec=</varname> defaults to 32 seconds, and
|
||||
<varname>PollIntervalMaxSec=</varname> defaults to 2048 seconds.</para></listitem>
|
||||
<listitem><para>The minimum and maximum poll intervals for NTP messages. Polling starts at the
|
||||
minimum poll interval, and is adjusted within the specified limits in response to received packets.
|
||||
</para>
|
||||
|
||||
<para>Each setting takes a time value. The default unit is seconds, but other units may be specified,
|
||||
see <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
<varname>PollIntervalMinSec=</varname> defaults to 32 seconds and must not be smaller than
|
||||
16 seconds. <varname>PollIntervalMaxSec=</varname> defaults to 34 min 8 s (2048 seconds) and must be
|
||||
larger than <varname>PollIntervalMinSec=</varname>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>ConnectionRetrySec=</varname></term>
|
||||
<listitem><para>Specifies the delaying attempts to contact servers after network is online. Takes a time value (in seconds).
|
||||
Defaults to 30 seconds and must not be smaller than 1 seconds.</para></listitem>
|
||||
<listitem><para>Specifies the minimum delay before subsequent attempts to contact a new NTP server
|
||||
are made.</para>
|
||||
|
||||
<para>Takes a time value. The default unit is seconds, but other units may be specified, see
|
||||
<citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
Defaults to 30 seconds and must not be smaller than 1 second.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
@ -125,7 +125,7 @@
|
||||
<title>Values</title>
|
||||
<para>Values are written as double quoted strings, such as ("string").
|
||||
To include a quotation mark (") in the value, precede it by a backslash (\").
|
||||
Any other occurrences of a character followed by a backslash are not further unescaped.
|
||||
Any other occurrences of a backslash followed by a character are not unescaped.
|
||||
That is, "\t\n" is treated as four characters:
|
||||
backslash, lowercase t, backslash, lowercase n.</para>
|
||||
|
||||
@ -459,7 +459,7 @@
|
||||
<para>Specify a program to be executed after processing of all the rules for the event. With
|
||||
<literal>+=</literal>, this invocation is added to the list, and with <literal>=</literal> or
|
||||
<literal>:=</literal>, it replaces any previous contents of the list. Please note that both
|
||||
<literal>program</literal> and <literal>builtin</literal> types described below use a single
|
||||
<literal>program</literal> and <literal>builtin</literal> types described below share a common
|
||||
list, so clearing the list with <literal>:=</literal> and <literal>=</literal> affects both
|
||||
types.</para>
|
||||
|
||||
|
@ -549,6 +549,7 @@ foreach ident : [
|
||||
['mallinfo', '''#include <malloc.h>'''],
|
||||
['execveat', '''#include <unistd.h>'''],
|
||||
['close_range', '''#include <unistd.h>'''],
|
||||
['epoll_pwait2', '''#include <sys/epoll.h>'''],
|
||||
]
|
||||
|
||||
have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
|
||||
@ -672,6 +673,7 @@ foreach header : ['crypt.h',
|
||||
'sys/auxv.h',
|
||||
'valgrind/memcheck.h',
|
||||
'valgrind/valgrind.h',
|
||||
'linux/time_types.h',
|
||||
]
|
||||
|
||||
conf.set10('HAVE_' + header.underscorify().to_upper(),
|
||||
|
@ -28,3 +28,4 @@ uk
|
||||
zh_CN
|
||||
zh_TW
|
||||
pa
|
||||
kab
|
||||
|
849
po/kab.po
Normal file
849
po/kab.po
Normal file
@ -0,0 +1,849 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the systemd package.
|
||||
# Slimane Selyan Amiri <selyan.kab@gmail.com>, 2021.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: systemd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: kab\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:22
|
||||
msgid "Send passphrase back to system"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:23
|
||||
msgid ""
|
||||
"Authentication is required to send the entered passphrase back to the system."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:33
|
||||
msgid "Manage system services or other units"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:34
|
||||
msgid "Authentication is required to manage system services or other units."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:43
|
||||
msgid "Manage system service or unit files"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:44
|
||||
msgid "Authentication is required to manage system service or unit files."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:54
|
||||
msgid "Set or unset system and service manager environment variables"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:55
|
||||
msgid ""
|
||||
"Authentication is required to set or unset system and service manager "
|
||||
"environment variables."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:64
|
||||
msgid "Reload the systemd state"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:65
|
||||
msgid "Authentication is required to reload the systemd state."
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:13
|
||||
msgid "Create a home area"
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:14
|
||||
msgid "Authentication is required to create a user's home area."
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:23
|
||||
msgid "Remove a home area"
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:24
|
||||
msgid "Authentication is required to remove a user's home area."
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:33
|
||||
msgid "Check credentials of a home area"
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:34
|
||||
msgid ""
|
||||
"Authentication is required to check credentials against a user's home area."
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:43
|
||||
msgid "Update a home area"
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:44
|
||||
msgid "Authentication is required to update a user's home area."
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:53
|
||||
msgid "Resize a home area"
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:54
|
||||
msgid "Authentication is required to resize a user's home area."
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:63
|
||||
msgid "Change password of a home area"
|
||||
msgstr ""
|
||||
|
||||
#: src/home/org.freedesktop.home1.policy:64
|
||||
msgid ""
|
||||
"Authentication is required to change the password of a user's home area."
|
||||
msgstr ""
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:20
|
||||
msgid "Set hostname"
|
||||
msgstr ""
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:21
|
||||
msgid "Authentication is required to set the local hostname."
|
||||
msgstr ""
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:30
|
||||
msgid "Set static hostname"
|
||||
msgstr ""
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:31
|
||||
msgid ""
|
||||
"Authentication is required to set the statically configured local hostname, "
|
||||
"as well as the pretty hostname."
|
||||
msgstr ""
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:41
|
||||
msgid "Set machine information"
|
||||
msgstr ""
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:42
|
||||
msgid "Authentication is required to set local machine information."
|
||||
msgstr ""
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:51
|
||||
msgid "Get product UUID"
|
||||
msgstr ""
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:52
|
||||
msgid "Authentication is required to get product UUID."
|
||||
msgstr ""
|
||||
|
||||
#: src/import/org.freedesktop.import1.policy:22
|
||||
msgid "Import a VM or container image"
|
||||
msgstr ""
|
||||
|
||||
#: src/import/org.freedesktop.import1.policy:23
|
||||
msgid "Authentication is required to import a VM or container image"
|
||||
msgstr ""
|
||||
|
||||
#: src/import/org.freedesktop.import1.policy:32
|
||||
msgid "Export a VM or container image"
|
||||
msgstr ""
|
||||
|
||||
#: src/import/org.freedesktop.import1.policy:33
|
||||
msgid "Authentication is required to export a VM or container image"
|
||||
msgstr ""
|
||||
|
||||
#: src/import/org.freedesktop.import1.policy:42
|
||||
msgid "Download a VM or container image"
|
||||
msgstr ""
|
||||
|
||||
#: src/import/org.freedesktop.import1.policy:43
|
||||
msgid "Authentication is required to download a VM or container image"
|
||||
msgstr ""
|
||||
|
||||
#: src/locale/org.freedesktop.locale1.policy:22
|
||||
msgid "Set system locale"
|
||||
msgstr ""
|
||||
|
||||
#: src/locale/org.freedesktop.locale1.policy:23
|
||||
msgid "Authentication is required to set the system locale."
|
||||
msgstr ""
|
||||
|
||||
#: src/locale/org.freedesktop.locale1.policy:33
|
||||
msgid "Set system keyboard settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/locale/org.freedesktop.locale1.policy:34
|
||||
msgid "Authentication is required to set the system keyboard settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:22
|
||||
msgid "Allow applications to inhibit system shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:23
|
||||
msgid ""
|
||||
"Authentication is required for an application to inhibit system shutdown."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:33
|
||||
msgid "Allow applications to delay system shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:34
|
||||
msgid "Authentication is required for an application to delay system shutdown."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:44
|
||||
msgid "Allow applications to inhibit system sleep"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:45
|
||||
msgid "Authentication is required for an application to inhibit system sleep."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:55
|
||||
msgid "Allow applications to delay system sleep"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:56
|
||||
msgid "Authentication is required for an application to delay system sleep."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:65
|
||||
msgid "Allow applications to inhibit automatic system suspend"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:66
|
||||
msgid ""
|
||||
"Authentication is required for an application to inhibit automatic system "
|
||||
"suspend."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:75
|
||||
msgid "Allow applications to inhibit system handling of the power key"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:76
|
||||
msgid ""
|
||||
"Authentication is required for an application to inhibit system handling of "
|
||||
"the power key."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:86
|
||||
msgid "Allow applications to inhibit system handling of the suspend key"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:87
|
||||
msgid ""
|
||||
"Authentication is required for an application to inhibit system handling of "
|
||||
"the suspend key."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:97
|
||||
msgid "Allow applications to inhibit system handling of the hibernate key"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:98
|
||||
msgid ""
|
||||
"Authentication is required for an application to inhibit system handling of "
|
||||
"the hibernate key."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:107
|
||||
msgid "Allow applications to inhibit system handling of the lid switch"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:108
|
||||
msgid ""
|
||||
"Authentication is required for an application to inhibit system handling of "
|
||||
"the lid switch."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:117
|
||||
msgid "Allow applications to inhibit system handling of the reboot key"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:118
|
||||
msgid ""
|
||||
"Authentication is required for an application to inhibit system handling of "
|
||||
"the reboot key."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:128
|
||||
msgid "Allow non-logged-in user to run programs"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:129
|
||||
msgid "Explicit request is required to run programs as a non-logged-in user."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:138
|
||||
msgid "Allow non-logged-in users to run programs"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:139
|
||||
msgid "Authentication is required to run programs as a non-logged-in user."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:148
|
||||
msgid "Allow attaching devices to seats"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:149
|
||||
msgid "Authentication is required to attach a device to a seat."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:159
|
||||
msgid "Flush device to seat attachments"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:160
|
||||
msgid "Authentication is required to reset how devices are attached to seats."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:169
|
||||
msgid "Power off the system"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:170
|
||||
msgid "Authentication is required to power off the system."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:180
|
||||
msgid "Power off the system while other users are logged in"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:181
|
||||
msgid ""
|
||||
"Authentication is required to power off the system while other users are "
|
||||
"logged in."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:191
|
||||
msgid "Power off the system while an application is inhibiting this"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:192
|
||||
msgid ""
|
||||
"Authentication is required to power off the system while an application is "
|
||||
"inhibiting this."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:202
|
||||
msgid "Reboot the system"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:203
|
||||
msgid "Authentication is required to reboot the system."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:213
|
||||
msgid "Reboot the system while other users are logged in"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:214
|
||||
msgid ""
|
||||
"Authentication is required to reboot the system while other users are logged "
|
||||
"in."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:224
|
||||
msgid "Reboot the system while an application is inhibiting this"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:225
|
||||
msgid ""
|
||||
"Authentication is required to reboot the system while an application is "
|
||||
"inhibiting this."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:235
|
||||
msgid "Halt the system"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:236
|
||||
msgid "Authentication is required to halt the system."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:246
|
||||
msgid "Halt the system while other users are logged in"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:247
|
||||
msgid ""
|
||||
"Authentication is required to halt the system while other users are logged "
|
||||
"in."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:257
|
||||
msgid "Halt the system while an application is inhibiting this"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:258
|
||||
msgid ""
|
||||
"Authentication is required to halt the system while an application is "
|
||||
"inhibiting this."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:268
|
||||
msgid "Suspend the system"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:269
|
||||
msgid "Authentication is required to suspend the system."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:278
|
||||
msgid "Suspend the system while other users are logged in"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:279
|
||||
msgid ""
|
||||
"Authentication is required to suspend the system while other users are "
|
||||
"logged in."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:289
|
||||
msgid "Suspend the system while an application is inhibiting this"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:290
|
||||
msgid ""
|
||||
"Authentication is required to suspend the system while an application is "
|
||||
"inhibiting this."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:300
|
||||
msgid "Hibernate the system"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:301
|
||||
msgid "Authentication is required to hibernate the system."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:310
|
||||
msgid "Hibernate the system while other users are logged in"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:311
|
||||
msgid ""
|
||||
"Authentication is required to hibernate the system while other users are "
|
||||
"logged in."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:321
|
||||
msgid "Hibernate the system while an application is inhibiting this"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:322
|
||||
msgid ""
|
||||
"Authentication is required to hibernate the system while an application is "
|
||||
"inhibiting this."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:332
|
||||
msgid "Manage active sessions, users and seats"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:333
|
||||
msgid "Authentication is required to manage active sessions, users and seats."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:342
|
||||
msgid "Lock or unlock active sessions"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:343
|
||||
msgid "Authentication is required to lock or unlock active sessions."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:352
|
||||
msgid "Set the reboot \"reason\" in the kernel"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:353
|
||||
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:363
|
||||
msgid "Indicate to the firmware to boot to setup interface"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:364
|
||||
msgid ""
|
||||
"Authentication is required to indicate to the firmware to boot to setup "
|
||||
"interface."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:374
|
||||
msgid "Indicate to the boot loader to boot to the boot loader menu"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:375
|
||||
msgid ""
|
||||
"Authentication is required to indicate to the boot loader to boot to the "
|
||||
"boot loader menu."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:385
|
||||
msgid "Indicate to the boot loader to boot a specific entry"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:386
|
||||
msgid ""
|
||||
"Authentication is required to indicate to the boot loader to boot into a "
|
||||
"specific boot loader entry."
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:396
|
||||
msgid "Set a wall message"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:397
|
||||
msgid "Authentication is required to set a wall message"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:406
|
||||
msgid "Change Session"
|
||||
msgstr ""
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:407
|
||||
msgid "Authentication is required to change the virtual terminal."
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:22
|
||||
msgid "Log into a local container"
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:23
|
||||
msgid "Authentication is required to log into a local container."
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:32
|
||||
msgid "Log into the local host"
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:33
|
||||
msgid "Authentication is required to log into the local host."
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:42
|
||||
msgid "Acquire a shell in a local container"
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:43
|
||||
msgid "Authentication is required to acquire a shell in a local container."
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:53
|
||||
msgid "Acquire a shell on the local host"
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:54
|
||||
msgid "Authentication is required to acquire a shell on the local host."
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:64
|
||||
msgid "Acquire a pseudo TTY in a local container"
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:65
|
||||
msgid ""
|
||||
"Authentication is required to acquire a pseudo TTY in a local container."
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:74
|
||||
msgid "Acquire a pseudo TTY on the local host"
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:75
|
||||
msgid "Authentication is required to acquire a pseudo TTY on the local host."
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:84
|
||||
msgid "Manage local virtual machines and containers"
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:85
|
||||
msgid ""
|
||||
"Authentication is required to manage local virtual machines and containers."
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:95
|
||||
msgid "Manage local virtual machine and container images"
|
||||
msgstr ""
|
||||
|
||||
#: src/machine/org.freedesktop.machine1.policy:96
|
||||
msgid ""
|
||||
"Authentication is required to manage local virtual machine and container "
|
||||
"images."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:22
|
||||
msgid "Set NTP servers"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:23
|
||||
msgid "Authentication is required to set NTP servers."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:33
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:44
|
||||
msgid "Set DNS servers"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:34
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:45
|
||||
msgid "Authentication is required to set DNS servers."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:44
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:55
|
||||
msgid "Set domains"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:45
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:56
|
||||
msgid "Authentication is required to set domains."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:55
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:66
|
||||
msgid "Set default route"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:56
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:67
|
||||
msgid "Authentication is required to set default route."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:66
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:77
|
||||
msgid "Enable/disable LLMNR"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:67
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:78
|
||||
msgid "Authentication is required to enable or disable LLMNR."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:77
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:88
|
||||
msgid "Enable/disable multicast DNS"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:78
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:89
|
||||
msgid "Authentication is required to enable or disable multicast DNS."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:88
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:99
|
||||
msgid "Enable/disable DNS over TLS"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:89
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:100
|
||||
msgid "Authentication is required to enable or disable DNS over TLS."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:99
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:110
|
||||
msgid "Enable/disable DNSSEC"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:100
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:111
|
||||
msgid "Authentication is required to enable or disable DNSSEC."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:110
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:121
|
||||
msgid "Set DNSSEC Negative Trust Anchors"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:111
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:122
|
||||
msgid "Authentication is required to set DNSSEC Negative Trust Anchors."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:121
|
||||
msgid "Revert NTP settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:122
|
||||
msgid "Authentication is required to reset NTP settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:132
|
||||
msgid "Revert DNS settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:133
|
||||
msgid "Authentication is required to reset DNS settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:143
|
||||
msgid "DHCP server sends force renew message"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:144
|
||||
msgid "Authentication is required to send force renew message."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:154
|
||||
msgid "Renew dynamic addresses"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:155
|
||||
msgid "Authentication is required to renew dynamic addresses."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:165
|
||||
msgid "Reload network settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:166
|
||||
msgid "Authentication is required to reload network settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:176
|
||||
msgid "Reconfigure network interface"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/org.freedesktop.network1.policy:177
|
||||
msgid "Authentication is required to reconfigure network interface."
|
||||
msgstr ""
|
||||
|
||||
#: src/portable/org.freedesktop.portable1.policy:13
|
||||
msgid "Inspect a portable service image"
|
||||
msgstr ""
|
||||
|
||||
#: src/portable/org.freedesktop.portable1.policy:14
|
||||
msgid "Authentication is required to inspect a portable service image."
|
||||
msgstr ""
|
||||
|
||||
#: src/portable/org.freedesktop.portable1.policy:23
|
||||
msgid "Attach or detach a portable service image"
|
||||
msgstr ""
|
||||
|
||||
#: src/portable/org.freedesktop.portable1.policy:24
|
||||
msgid ""
|
||||
"Authentication is required to attach or detach a portable service image."
|
||||
msgstr ""
|
||||
|
||||
#: src/portable/org.freedesktop.portable1.policy:34
|
||||
msgid "Delete or modify portable service image"
|
||||
msgstr ""
|
||||
|
||||
#: src/portable/org.freedesktop.portable1.policy:35
|
||||
msgid ""
|
||||
"Authentication is required to delete or modify a portable service image."
|
||||
msgstr ""
|
||||
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:22
|
||||
msgid "Register a DNS-SD service"
|
||||
msgstr ""
|
||||
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:23
|
||||
msgid "Authentication is required to register a DNS-SD service"
|
||||
msgstr ""
|
||||
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:33
|
||||
msgid "Unregister a DNS-SD service"
|
||||
msgstr ""
|
||||
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:34
|
||||
msgid "Authentication is required to unregister a DNS-SD service"
|
||||
msgstr ""
|
||||
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:132
|
||||
msgid "Revert name resolution settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/resolve/org.freedesktop.resolve1.policy:133
|
||||
msgid "Authentication is required to reset name resolution settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/timedate/org.freedesktop.timedate1.policy:22
|
||||
msgid "Set system time"
|
||||
msgstr ""
|
||||
|
||||
#: src/timedate/org.freedesktop.timedate1.policy:23
|
||||
msgid "Authentication is required to set the system time."
|
||||
msgstr ""
|
||||
|
||||
#: src/timedate/org.freedesktop.timedate1.policy:33
|
||||
msgid "Set system timezone"
|
||||
msgstr ""
|
||||
|
||||
#: src/timedate/org.freedesktop.timedate1.policy:34
|
||||
msgid "Authentication is required to set the system timezone."
|
||||
msgstr ""
|
||||
|
||||
#: src/timedate/org.freedesktop.timedate1.policy:43
|
||||
msgid "Set RTC to local timezone or UTC"
|
||||
msgstr ""
|
||||
|
||||
#: src/timedate/org.freedesktop.timedate1.policy:44
|
||||
msgid ""
|
||||
"Authentication is required to control whether the RTC stores the local or "
|
||||
"UTC time."
|
||||
msgstr ""
|
||||
|
||||
#: src/timedate/org.freedesktop.timedate1.policy:53
|
||||
msgid "Turn network time synchronization on or off"
|
||||
msgstr ""
|
||||
|
||||
#: src/timedate/org.freedesktop.timedate1.policy:54
|
||||
msgid ""
|
||||
"Authentication is required to control whether network time synchronization "
|
||||
"shall be enabled."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:359
|
||||
msgid "Authentication is required to start '$(unit)'."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:360
|
||||
msgid "Authentication is required to stop '$(unit)'."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:361
|
||||
msgid "Authentication is required to reload '$(unit)'."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:362 src/core/dbus-unit.c:363
|
||||
msgid "Authentication is required to restart '$(unit)'."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:535
|
||||
msgid ""
|
||||
"Authentication is required to send a UNIX signal to the processes of "
|
||||
"'$(unit)'."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:566
|
||||
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:599
|
||||
msgid "Authentication is required to set properties on '$(unit)'."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:708
|
||||
msgid ""
|
||||
"Authentication is required to delete files and directories associated with "
|
||||
"'$(unit)'."
|
||||
msgstr ""
|
||||
|
||||
#: src/core/dbus-unit.c:757
|
||||
msgid ""
|
||||
"Authentication is required to freeze or thaw the processes of '$(unit)' unit."
|
||||
msgstr ""
|
26
po/pt_BR.po
26
po/pt_BR.po
@ -4,21 +4,22 @@
|
||||
# Enrico Nicoletto <liverig@gmail.com>, 2014.
|
||||
# Filipe Brandenburger <filbranden@gmail.com>, 2018.
|
||||
# Rafael Fontenelle <rafaelff@gnome.org>, 2015-2020.
|
||||
#
|
||||
# Gustavo Costa <xfgusta@gmail.com>, 2021.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: systemd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
||||
"PO-Revision-Date: 2020-05-30 09:10-0300\n"
|
||||
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
|
||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||
"PO-Revision-Date: 2021-02-25 18:41+0000\n"
|
||||
"Last-Translator: Gustavo Costa <xfgusta@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translate.fedoraproject.org/"
|
||||
"projects/systemd/master/pt_BR/>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
"X-Generator: Gtranslator 3.36.0\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.4.2\n"
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:22
|
||||
msgid "Send passphrase back to system"
|
||||
@ -313,23 +314,18 @@ msgstr ""
|
||||
"sistema sobre o interruptor da tela."
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:117
|
||||
#, fuzzy
|
||||
#| msgid "Allow applications to inhibit system handling of the power key"
|
||||
msgid "Allow applications to inhibit system handling of the reboot key"
|
||||
msgstr ""
|
||||
"Permitir que aplicativos inibam o sistema de gerenciar o botão de energia"
|
||||
"Permitir que aplicativos inibam o sistema de gerenciar o botão de "
|
||||
"reinicialização"
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:118
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Authentication is required for an application to inhibit system handling "
|
||||
#| "of the power key."
|
||||
msgid ""
|
||||
"Authentication is required for an application to inhibit system handling of "
|
||||
"the reboot key."
|
||||
msgstr ""
|
||||
"É necessária autenticação para que um aplicativo iniba a manipulação do "
|
||||
"sistema sobre a chave de ligar/desligar."
|
||||
"É necessária autenticação para que um aplicativo iniba o sistema de "
|
||||
"gerenciar o botão de reinicialização."
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:128
|
||||
msgid "Allow non-logged-in user to run programs"
|
||||
|
@ -5,6 +5,11 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#if HAVE_LINUX_TIME_TYPES_H
|
||||
/* This header defines __kernel_timespec for us, but is only available since Linux 5.1, hence conditionally
|
||||
* include this. */
|
||||
#include <linux/time_types.h>
|
||||
#endif
|
||||
#include <signal.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/types.h>
|
||||
@ -382,3 +387,41 @@ static inline int missing_close_range(int first_fd, int end_fd, unsigned flags)
|
||||
|
||||
# define close_range missing_close_range
|
||||
#endif
|
||||
|
||||
/* ======================================================================= */
|
||||
|
||||
#if !HAVE_EPOLL_PWAIT2
|
||||
|
||||
/* Defined to be equivalent to the kernel's _NSIG_WORDS, i.e. the size of the array of longs that is
|
||||
* encapsulated by sigset_t. */
|
||||
#define KERNEL_NSIG_WORDS (64 / (sizeof(long) * 8))
|
||||
#define KERNEL_NSIG_BYTES (KERNEL_NSIG_WORDS * sizeof(long))
|
||||
|
||||
struct epoll_event;
|
||||
|
||||
static inline int missing_epoll_pwait2(
|
||||
int fd,
|
||||
struct epoll_event *events,
|
||||
int maxevents,
|
||||
const struct timespec *timeout,
|
||||
const sigset_t *sigset) {
|
||||
|
||||
# if defined(__NR_epoll_pwait2) && HAVE_LINUX_TIME_TYPES_H
|
||||
if (timeout) {
|
||||
/* Convert from userspace timespec to kernel timespec */
|
||||
struct __kernel_timespec ts = {
|
||||
.tv_sec = timeout->tv_sec,
|
||||
.tv_nsec = timeout->tv_nsec,
|
||||
};
|
||||
|
||||
return syscall(__NR_epoll_pwait2, fd, events, maxevents, &ts, sigset, sigset ? KERNEL_NSIG_BYTES : 0);
|
||||
} else
|
||||
return syscall(__NR_epoll_pwait2, fd, events, maxevents, NULL, sigset, sigset ? KERNEL_NSIG_BYTES : 0);
|
||||
# else
|
||||
errno = ENOSYS;
|
||||
return -1;
|
||||
# endif
|
||||
}
|
||||
|
||||
# define epoll_pwait2 missing_epoll_pwait2
|
||||
#endif
|
||||
|
@ -673,3 +673,58 @@ assert_cc(__NR_statx == systemd_NR_statx);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef __IGNORE_epoll_pwait2
|
||||
# if defined(__aarch64__)
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# elif defined(__alpha__)
|
||||
# define systemd_NR_epoll_pwait2 551
|
||||
# elif defined(__arc__) || defined(__tilegx__)
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# elif defined(__arm__)
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# elif defined(__i386__)
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# elif defined(__ia64__)
|
||||
# define systemd_NR_epoll_pwait2 1465
|
||||
# elif defined(__m68k__)
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# elif defined(_MIPS_SIM)
|
||||
# if _MIPS_SIM == _MIPS_SIM_ABI32
|
||||
# define systemd_NR_epoll_pwait2 4441
|
||||
# elif _MIPS_SIM == _MIPS_SIM_NABI32
|
||||
# define systemd_NR_epoll_pwait2 6441
|
||||
# elif _MIPS_SIM == _MIPS_SIM_ABI64
|
||||
# define systemd_NR_epoll_pwait2 5441
|
||||
# else
|
||||
# error "Unknown MIPS ABI"
|
||||
# endif
|
||||
# elif defined(__powerpc__)
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# elif defined(__s390__)
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# elif defined(__sparc__)
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# elif defined(__x86_64__)
|
||||
# if defined(__ILP32__)
|
||||
# define systemd_NR_epoll_pwait2 (441 | /* __X32_SYSCALL_BIT */ 0x40000000)
|
||||
# else
|
||||
# define systemd_NR_epoll_pwait2 441
|
||||
# endif
|
||||
# else
|
||||
# warning "epoll_pwait2() syscall number is unknown for your architecture"
|
||||
# endif
|
||||
|
||||
/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
|
||||
# if defined __NR_epoll_pwait2 && __NR_epoll_pwait2 >= 0
|
||||
# if defined systemd_NR_epoll_pwait2
|
||||
assert_cc(__NR_epoll_pwait2 == systemd_NR_epoll_pwait2);
|
||||
# endif
|
||||
# else
|
||||
# if defined __NR_epoll_pwait2
|
||||
# undef __NR_epoll_pwait2
|
||||
# endif
|
||||
# if defined systemd_NR_epoll_pwait2 && systemd_NR_epoll_pwait2 >= 0
|
||||
# define __NR_epoll_pwait2 systemd_NR_epoll_pwait2
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
@ -17,7 +17,8 @@ SYSCALLS = [
|
||||
'pkey_mprotect',
|
||||
'renameat2',
|
||||
'setns',
|
||||
'statx']
|
||||
'statx',
|
||||
'epoll_pwait2']
|
||||
|
||||
def dictify(f):
|
||||
def wrap(*args, **kwargs):
|
||||
|
@ -3780,9 +3780,59 @@ pending:
|
||||
return r;
|
||||
}
|
||||
|
||||
static int epoll_wait_usec(
|
||||
int fd,
|
||||
struct epoll_event *events,
|
||||
int maxevents,
|
||||
usec_t timeout) {
|
||||
|
||||
static bool epoll_pwait2_absent = false;
|
||||
int r, msec;
|
||||
|
||||
/* A wrapper that uses epoll_pwait2() if available, and falls back to epoll_wait() if not */
|
||||
|
||||
if (!epoll_pwait2_absent && timeout != USEC_INFINITY) {
|
||||
struct timespec ts;
|
||||
|
||||
r = epoll_pwait2(fd,
|
||||
events,
|
||||
maxevents,
|
||||
timespec_store(&ts, timeout),
|
||||
NULL);
|
||||
if (r >= 0)
|
||||
return r;
|
||||
if (!ERRNO_IS_NOT_SUPPORTED(r) && !ERRNO_IS_PRIVILEGE(r))
|
||||
return -errno; /* Only fallback to old epoll_wait() if the syscall is masked or not
|
||||
* supported. */
|
||||
|
||||
epoll_pwait2_absent = true;
|
||||
}
|
||||
|
||||
if (timeout == USEC_INFINITY)
|
||||
msec = -1;
|
||||
else {
|
||||
usec_t k;
|
||||
|
||||
k = DIV_ROUND_UP(timeout, USEC_PER_MSEC);
|
||||
if (k >= INT_MAX)
|
||||
msec = INT_MAX; /* Saturate */
|
||||
else
|
||||
msec = (int) k;
|
||||
}
|
||||
|
||||
r = epoll_wait(fd,
|
||||
events,
|
||||
maxevents,
|
||||
msec);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
_public_ int sd_event_wait(sd_event *e, uint64_t timeout) {
|
||||
size_t n_event_queue, m;
|
||||
int r, msec;
|
||||
int r;
|
||||
|
||||
assert_return(e, -EINVAL);
|
||||
assert_return(e = event_resolve(e), -ENOPKG);
|
||||
@ -3801,21 +3851,16 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) {
|
||||
|
||||
/* If we still have inotify data buffered, then query the other fds, but don't wait on it */
|
||||
if (e->inotify_data_buffered)
|
||||
msec = 0;
|
||||
else
|
||||
msec = timeout == (uint64_t) -1 ? -1 : (int) DIV_ROUND_UP(timeout, USEC_PER_MSEC);
|
||||
timeout = 0;
|
||||
|
||||
for (;;) {
|
||||
r = epoll_wait(e->epoll_fd, e->event_queue, e->event_queue_allocated, msec);
|
||||
if (r < 0) {
|
||||
if (errno == EINTR) {
|
||||
e->state = SD_EVENT_PENDING;
|
||||
return 1;
|
||||
}
|
||||
|
||||
r = -errno;
|
||||
goto finish;
|
||||
r = epoll_wait_usec(e->epoll_fd, e->event_queue, e->event_queue_allocated, timeout);
|
||||
if (r == -EINTR) {
|
||||
e->state = SD_EVENT_PENDING;
|
||||
return 1;
|
||||
}
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
m = (size_t) r;
|
||||
|
||||
@ -3828,7 +3873,7 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) {
|
||||
if (!GREEDY_REALLOC(e->event_queue, e->event_queue_allocated, e->event_queue_allocated + n_event_queue))
|
||||
return -ENOMEM;
|
||||
|
||||
msec = 0;
|
||||
timeout = 0;
|
||||
}
|
||||
|
||||
triple_timestamp_get(&e->timestamp);
|
||||
|
@ -1424,7 +1424,7 @@ static int oci_cgroup_block_io_weight_device(const char *name, JsonVariant *v, J
|
||||
static const JsonDispatch table[] = {
|
||||
{ "major", JSON_VARIANT_UNSIGNED, oci_device_major, offsetof(struct device_data, major), JSON_MANDATORY },
|
||||
{ "minor", JSON_VARIANT_UNSIGNED, oci_device_minor, offsetof(struct device_data, minor), JSON_MANDATORY },
|
||||
{ "weight", JSON_VARIANT_UNSIGNED, json_dispatch_unsigned, offsetof(struct device_data, weight), 0 },
|
||||
{ "weight", JSON_VARIANT_UNSIGNED, json_dispatch_uintmax, offsetof(struct device_data, weight), 0 },
|
||||
{ "leafWeight", JSON_VARIANT_INTEGER, oci_unsupported, 0, JSON_PERMISSIVE },
|
||||
{}
|
||||
};
|
||||
@ -1484,7 +1484,7 @@ static int oci_cgroup_block_io_throttle(const char *name, JsonVariant *v, JsonDi
|
||||
static const JsonDispatch table[] = {
|
||||
{ "major", JSON_VARIANT_UNSIGNED, oci_device_major, offsetof(struct device_data, major), JSON_MANDATORY },
|
||||
{ "minor", JSON_VARIANT_UNSIGNED, oci_device_minor, offsetof(struct device_data, minor), JSON_MANDATORY },
|
||||
{ "rate", JSON_VARIANT_UNSIGNED, json_dispatch_unsigned, offsetof(struct device_data, rate), JSON_MANDATORY },
|
||||
{ "rate", JSON_VARIANT_UNSIGNED, json_dispatch_uintmax, offsetof(struct device_data, rate), JSON_MANDATORY },
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -4063,7 +4063,7 @@ int json_dispatch_tristate(const char *name, JsonVariant *variant, JsonDispatchF
|
||||
return 0;
|
||||
}
|
||||
|
||||
int json_dispatch_integer(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) {
|
||||
int json_dispatch_intmax(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) {
|
||||
intmax_t *i = userdata;
|
||||
|
||||
assert(variant);
|
||||
@ -4076,7 +4076,7 @@ int json_dispatch_integer(const char *name, JsonVariant *variant, JsonDispatchFl
|
||||
return 0;
|
||||
}
|
||||
|
||||
int json_dispatch_unsigned(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) {
|
||||
int json_dispatch_uintmax(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) {
|
||||
uintmax_t *u = userdata;
|
||||
|
||||
assert(variant);
|
||||
|
@ -293,8 +293,8 @@ int json_dispatch_strv(const char *name, JsonVariant *variant, JsonDispatchFlags
|
||||
int json_dispatch_boolean(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_tristate(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_variant(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_integer(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_unsigned(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_intmax(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_uintmax(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_uint32(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_int32(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
int json_dispatch_uid_gid(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
@ -303,10 +303,10 @@ int json_dispatch_id128(const char *name, JsonVariant *variant, JsonDispatchFlag
|
||||
int json_dispatch_unsupported(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
|
||||
assert_cc(sizeof(uintmax_t) == sizeof(uint64_t));
|
||||
#define json_dispatch_uint64 json_dispatch_unsigned
|
||||
#define json_dispatch_uint64 json_dispatch_uintmax
|
||||
|
||||
assert_cc(sizeof(intmax_t) == sizeof(int64_t));
|
||||
#define json_dispatch_int64 json_dispatch_integer
|
||||
#define json_dispatch_int64 json_dispatch_intmax
|
||||
|
||||
assert_cc(sizeof(uint32_t) == sizeof(unsigned));
|
||||
#define json_dispatch_uint json_dispatch_uint32
|
||||
|
@ -165,7 +165,7 @@ static const sd_bus_vtable manager_vtable[] = {
|
||||
SD_BUS_PROPERTY("FallbackNTPServers", "as", property_get_servers, offsetof(Manager, fallback_servers), SD_BUS_VTABLE_PROPERTY_CONST),
|
||||
SD_BUS_PROPERTY("ServerName", "s", property_get_current_server_name, offsetof(Manager, current_server_name), 0),
|
||||
SD_BUS_PROPERTY("ServerAddress", "(iay)", property_get_current_server_address, offsetof(Manager, current_server_address), 0),
|
||||
SD_BUS_PROPERTY("RootDistanceMaxUSec", "t", bus_property_get_usec, offsetof(Manager, max_root_distance_usec), SD_BUS_VTABLE_PROPERTY_CONST),
|
||||
SD_BUS_PROPERTY("RootDistanceMaxUSec", "t", bus_property_get_usec, offsetof(Manager, root_distance_max_usec), SD_BUS_VTABLE_PROPERTY_CONST),
|
||||
SD_BUS_PROPERTY("PollIntervalMinUSec", "t", bus_property_get_usec, offsetof(Manager, poll_interval_min_usec), SD_BUS_VTABLE_PROPERTY_CONST),
|
||||
SD_BUS_PROPERTY("PollIntervalMaxUSec", "t", bus_property_get_usec, offsetof(Manager, poll_interval_max_usec), SD_BUS_VTABLE_PROPERTY_CONST),
|
||||
SD_BUS_PROPERTY("PollIntervalUSec", "t", bus_property_get_usec, offsetof(Manager, poll_interval_usec), 0),
|
||||
|
@ -21,7 +21,7 @@ struct ConfigPerfItem;
|
||||
Time.NTP, config_parse_servers, SERVER_SYSTEM, 0
|
||||
Time.Servers, config_parse_servers, SERVER_SYSTEM, 0
|
||||
Time.FallbackNTP, config_parse_servers, SERVER_FALLBACK, 0
|
||||
Time.RootDistanceMaxSec, config_parse_sec, 0, offsetof(Manager, max_root_distance_usec)
|
||||
Time.RootDistanceMaxSec, config_parse_sec, 0, offsetof(Manager, root_distance_max_usec)
|
||||
Time.PollIntervalMinSec, config_parse_sec, 0, offsetof(Manager, poll_interval_min_usec)
|
||||
Time.PollIntervalMaxSec, config_parse_sec, 0, offsetof(Manager, poll_interval_max_usec)
|
||||
Time.ConnectionRetrySec, config_parse_sec, 0, offsetof(Manager, connection_retry_usec)
|
||||
|
@ -34,7 +34,7 @@
|
||||
#define ADJ_SETOFFSET 0x0100 /* add 'time' to current time */
|
||||
#endif
|
||||
|
||||
/* expected accuracy of time synchronization; used to adjust the poll interval */
|
||||
/* Expected accuracy of time synchronization; used to adjust the poll interval */
|
||||
#define NTP_ACCURACY_SEC 0.2
|
||||
|
||||
/*
|
||||
@ -45,7 +45,7 @@
|
||||
#define NTP_MAX_ADJUST 0.4
|
||||
|
||||
/* Default of maximum acceptable root distance in microseconds. */
|
||||
#define NTP_MAX_ROOT_DISTANCE (5 * USEC_PER_SEC)
|
||||
#define NTP_ROOT_DISTANCE_MAX_USEC (5 * USEC_PER_SEC)
|
||||
|
||||
/* Maximum number of missed replies before selecting another source. */
|
||||
#define NTP_MAX_MISSED_REPLIES 2
|
||||
@ -507,7 +507,7 @@ static int manager_receive_response(sd_event_source *source, int fd, uint32_t re
|
||||
}
|
||||
|
||||
root_distance = ntp_ts_short_to_d(&ntpmsg.root_delay) / 2 + ntp_ts_short_to_d(&ntpmsg.root_dispersion);
|
||||
if (root_distance > (double) m->max_root_distance_usec / (double) USEC_PER_SEC) {
|
||||
if (root_distance > (double) m->root_distance_max_usec / (double) USEC_PER_SEC) {
|
||||
log_info("Server has too large root distance. Disconnecting.");
|
||||
return manager_connect(m);
|
||||
}
|
||||
@ -1081,7 +1081,7 @@ int manager_new(Manager **ret) {
|
||||
if (!m)
|
||||
return -ENOMEM;
|
||||
|
||||
m->max_root_distance_usec = NTP_MAX_ROOT_DISTANCE;
|
||||
m->root_distance_max_usec = NTP_ROOT_DISTANCE_MAX_USEC;
|
||||
m->poll_interval_min_usec = NTP_POLL_INTERVAL_MIN_USEC;
|
||||
m->poll_interval_max_usec = NTP_POLL_INTERVAL_MAX_USEC;
|
||||
|
||||
|
@ -79,7 +79,7 @@ struct Manager {
|
||||
} samples[8];
|
||||
unsigned samples_idx;
|
||||
double samples_jitter;
|
||||
usec_t max_root_distance_usec;
|
||||
usec_t root_distance_max_usec;
|
||||
|
||||
/* last change */
|
||||
bool jumped;
|
||||
|
@ -21,8 +21,17 @@ static int builtin_btrfs(sd_device *dev, int argc, char *argv[], bool test) {
|
||||
return log_device_error_errno(dev, SYNTHETIC_ERRNO(EINVAL), "Invalid arguments");
|
||||
|
||||
fd = open("/dev/btrfs-control", O_RDWR|O_CLOEXEC);
|
||||
if (fd < 0)
|
||||
if (fd < 0) {
|
||||
if (IN_SET(errno, ENOENT, ENXIO, ENODEV)) {
|
||||
/* Driver not installed? Then we aren't ready. This is useful in initrds that lack
|
||||
* btrfs.ko. After the host transition (where btrfs.ko will hopefully become
|
||||
* available) the device can be retriggered and will then be considered ready. */
|
||||
udev_builtin_add_property(dev, test, "ID_BTRFS_READY", "0");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return log_device_debug_errno(dev, errno, "Failed to open /dev/btrfs-control: %m");
|
||||
}
|
||||
|
||||
strscpy(args.name, sizeof(args.name), argv[2]);
|
||||
r = ioctl(fd, BTRFS_IOC_DEVICES_READY, &args);
|
||||
|
Loading…
x
Reference in New Issue
Block a user