From 2db7c770244f97c8674b6e9c78ed50319b38fea3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Bollo?= Date: Mon, 22 Jan 2018 10:07:42 +0100 Subject: [PATCH] afm-user-session: Create afm-user-session MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This new executable is the simplest user session manager: it waits the signal SIGTERM to stop and thus release the session. Change-Id: I557f27386c19ca3e2b28b21dd6a58918e9ca47be Signed-off-by: José Bollo --- src/CMakeLists.txt | 3 +++ src/afm-user-session.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/afm-user-session.c diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9921660..8f98c0d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -175,6 +175,9 @@ if(libsystemd_FOUND AND AFB_FOUND) LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/afm-binding.export-map" ) install(TARGETS afm-binding LIBRARY DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/afm) + + add_executable(afm-user-session afm-user-session.c) + install(TARGETS afm-user-session DESTINATION ${CMAKE_INSTALL_BINDIR}) else() MESSAGE(STATUS "Not creating daemons") endif() diff --git a/src/afm-user-session.c b/src/afm-user-session.c new file mode 100644 index 0000000..51acafe --- /dev/null +++ b/src/afm-user-session.c @@ -0,0 +1,38 @@ +/* + Copyright 2018 IoT.bzh + + author: José Bollo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include +#include + +int main() +{ + sigset_t ass, bss; + + sigemptyset(&ass); + sigaddset(&ass, SIGTERM); + + sigfillset(&bss); + sigdelset(&bss, SIGTERM); + + sd_notify(0, "READY=1"); + sigprocmask(SIG_SETMASK, &bss, 0); + sigwaitinfo(&ass, 0); + + return 0; +} + -- 2.16.6