afm-user-session: Create afm-user-session
authorJosé Bollo <jose.bollo@iot.bzh>
Mon, 22 Jan 2018 09:07:42 +0000 (10:07 +0100)
committerJosé Bollo <jose.bollo@iot.bzh>
Mon, 22 Jan 2018 09:07:42 +0000 (10:07 +0100)
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 <jose.bollo@iot.bzh>
src/CMakeLists.txt
src/afm-user-session.c [new file with mode: 0644]

index 9921660..8f98c0d 100644 (file)
@@ -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 (file)
index 0000000..51acafe
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ Copyright 2018 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ 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 <signal.h>
+#include <systemd/sd-daemon.h>
+
+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;
+}
+