* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#define _GNU_SOURCE
#define _LGPL_SOURCE
#include <errno.h>
#include <limits.h>
#include <sched.h>
#include <sys/signal.h>
#include <assert.h>
-#include <sys/prctl.h>
+#include <signal.h>
#include <common/common.h>
#include <common/utils.h>
#include <common/compat/getenv.h>
+#include <common/compat/prctl.h>
#include <common/sessiond-comm/unix.h>
#include "runas.h"
memset(worker->procname, 0, proc_orig_len);
strncpy(worker->procname, DEFAULT_RUN_AS_WORKER_NAME, proc_orig_len);
- ret = prctl(PR_SET_NAME, DEFAULT_RUN_AS_WORKER_NAME, 0, 0, 0);
- if (ret) {
+ ret = lttng_prctl(PR_SET_NAME,
+ (unsigned long) DEFAULT_RUN_AS_WORKER_NAME, 0, 0, 0);
+ if (ret && ret != -ENOSYS) {
/* Don't fail as this is not essential. */
PERROR("prctl PR_SET_NAME");
ret = 0;
static
int reset_sighandler(void)
{
- int sig, ret = 0;
+ int sig;
DBG("Resetting run_as worker signal handlers to default");
- for (sig = SIGHUP; sig <= SIGUNUSED; sig++) {
- /* Skip unblockable signals. */
- if (sig == SIGKILL || sig == SIGSTOP) {
- continue;
- }
- if (signal(sig, SIG_DFL) == SIG_ERR) {
- PERROR("reset signal %d", sig);
- ret = -1;
- goto end;
- }
+ for (sig = 1; sig <= 31; sig++) {
+ (void) signal(sig, SIG_DFL);
}
-end:
- return ret;
+ return 0;
}
static