#endif
#include "alloc-util.h"
-#include "architecture.h"
+//#include "architecture.h"
#include "escape.h"
#include "fd-util.h"
#include "fileio.h"
* "systemd"). If you pass a longer string it will be
* truncated */
- prctl(PR_SET_NAME, name);
+ (void) prctl(PR_SET_NAME, name);
if (program_invocation_name)
strncpy(program_invocation_name, name, strlen(program_invocation_name));
if (!outcome)
return -ENOMEM;
} else
- outcome[sz] = '\0';
+ outcome[sz] = '\0';
*env = outcome;
outcome = NULL;
return -EPROTO;
}
-void sigkill_wait(pid_t *pid) {
+#if 0 /// UNNEEDED by elogind
+void sigkill_wait(pid_t pid) {
+ assert(pid > 1);
+
+ if (kill(pid, SIGKILL) > 0)
+ (void) wait_for_terminate(pid, NULL);
+}
+
+void sigkill_waitp(pid_t *pid) {
if (!pid)
return;
if (*pid <= 1)
return;
- if (kill(*pid, SIGKILL) > 0)
- (void) wait_for_terminate(*pid, NULL);
+ sigkill_wait(*pid);
}
-#if 0 /// UNNEEDED by elogind
int kill_and_sigcont(pid_t pid, int sig) {
int r;
#if 0 /// UNNEEDED by elogind
noreturn void freeze(void) {
+ log_close();
+
/* Make sure nobody waits for us on a socket anymore */
close_all_fds(NULL, 0);
unsigned long personality_from_string(const char *p) {
int architecture;
+ if (!p)
+ return PERSONALITY_INVALID;
+
/* Parse a personality specifier. We use our own identifiers that indicate specific ABIs, rather than just
* hints regarding the register size, since we want to keep things open for multiple locally supported ABIs for
* the same register size. */
if (architecture < 0)
return PERSONALITY_INVALID;
-#if defined(__x86_64__)
-
- if (architecture == ARCHITECTURE_X86)
- return PER_LINUX32;
-
- if (architecture == ARCHITECTURE_X86_64)
- return PER_LINUX;
-
-#elif defined(__i386__)
-
- if (architecture == ARCHITECTURE_X86)
- return PER_LINUX;
-
-#elif defined(__s390x__)
-
- if (architecture == ARCHITECTURE_S390)
- return PER_LINUX32;
-
- if (architecture == ARCHITECTURE_S390X)
- return PER_LINUX;
-
-#elif defined(__s390__)
-
- if (architecture == ARCHITECTURE_S390)
- return PER_LINUX;
-
-#elif defined(__powerpc64__)
-# if __BYTE_ORDER == __BIG_ENDIAN
-
- if (architecture == ARCHITECTURE_PPC_LE)
- return PER_LINUX32;
-
- if (architecture == ARCHITECTURE_PPC64_LE)
+ if (architecture == native_architecture())
return PER_LINUX;
-
-# else
-
- if (architecture == ARCHITECTURE_PPC)
+#ifdef SECONDARY_ARCHITECTURE
+ if (architecture == SECONDARY_ARCHITECTURE)
return PER_LINUX32;
-
- if (architecture == ARCHITECTURE_PPC64)
- return PER_LINUX;
-
-# endif
-#elif defined(__powerpc__)
-# if __BYTE_ORDER == __BIG_ENDIAN
-
- if (architecture == ARCHITECTURE_PPC)
- return PER_LINUX;
-
-# else
-
- if (architecture == ARCHITECTURE_PPC_LE)
- return PER_LINUX;
-
-# endif
#endif
return PERSONALITY_INVALID;
const char* personality_to_string(unsigned long p) {
int architecture = _ARCHITECTURE_INVALID;
-#if defined(__x86_64__)
-
- if (p == PER_LINUX)
- architecture = ARCHITECTURE_X86_64;
- else if (p == PER_LINUX32)
- architecture = ARCHITECTURE_X86;
-
-#elif defined(__i386__)
-
if (p == PER_LINUX)
- architecture = ARCHITECTURE_X86;
-
-#elif defined(__s390x__)
-
- if (p == PER_LINUX)
- architecture = ARCHITECTURE_S390X;
+ architecture = native_architecture();
+#ifdef SECONDARY_ARCHITECTURE
else if (p == PER_LINUX32)
- architecture = ARCHITECTURE_S390;
-
-#elif defined(__s390__)
-
- if (p == PER_LINUX)
- architecture = ARCHITECTURE_S390;
-
-#elif defined(__powerpc64__)
-# if __BYTE_ORDER == __BIG_ENDIAN
-
- if (p == PER_LINUX)
- architecture = ARCHITECTURE_PPC64;
- else if (p == PER_LINUX32)
- architecture = ARCHITECTURE_PPC;
-
-# else
-
- if (p == PER_LINUX)
- architecture = ARCHITECTURE_PPC64_LE;
- else if (p == PER_LINUX32)
- architecture = ARCHITECTURE_PPC_LE;
-
-# endif
-#elif defined(__powerpc__)
-# if __BYTE_ORDER == __BIG_ENDIAN
-
- if (p == PER_LINUX)
- architecture = ARCHITECTURE_PPC;
-
-# else
-
- if (p == PER_LINUX)
- architecture = ARCHITECTURE_PPC_LE;
-
-# endif
+ architecture = SECONDARY_ARCHITECTURE;
#endif
if (architecture < 0)
#endif
}
+int pid_compare_func(const void *a, const void *b) {
+ const pid_t *p = a, *q = b;
+
+ /* Suitable for usage in qsort() */
+
+ if (*p < *q)
+ return -1;
+ if (*p > *q)
+ return 1;
+ return 0;
+}
+
static const char *const ioprio_class_table[] = {
[IOPRIO_CLASS_NONE] = "none",
[IOPRIO_CLASS_RT] = "realtime",