git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: separate syscall interfaces from kernel space, into posix compliant structure.
[lunaix-os.git]
/
lunaix-os
/
kernel
/
demos
/
signal_demo.c
diff --git
a/lunaix-os/kernel/demos/signal_demo.c
b/lunaix-os/kernel/demos/signal_demo.c
index 87b63040627492eed45e74a4cb5cf748601af4e5..4d7897e41c8c1de1807deda0c77dd8e3e9d2689c 100644
(file)
--- a/
lunaix-os/kernel/demos/signal_demo.c
+++ b/
lunaix-os/kernel/demos/signal_demo.c
@@
-1,23
+1,22
@@
-#include <lunaix/lunistd.h>
-#include <lunaix/proc.h>
-#include <lunaix/signal.h>
#include <lunaix/spike.h>
#include <lunaix/spike.h>
-#include <lunaix/syslog.h>
-#include <lunaix/types.h>
-LOG_MODULE("SIGDEMO")
+#include <ulibc/stdio.h>
+
+#include <usr/signal.h>
+#include <usr/sys/lunaix.h>
+#include <usr/unistd.h>
void __USER__
sigchild_handler(int signum)
{
void __USER__
sigchild_handler(int signum)
{
-
kprintf(KINFO
"SIGCHLD received\n");
+
printf(
"SIGCHLD received\n");
}
void __USER__
sigsegv_handler(int signum)
{
pid_t pid = getpid();
}
void __USER__
sigsegv_handler(int signum)
{
pid_t pid = getpid();
-
kprintf(KWARN
"SIGSEGV received on process %d\n", pid);
+
printf(
"SIGSEGV received on process %d\n", pid);
_exit(signum);
}
_exit(signum);
}
@@
-25,22
+24,22
@@
void __USER__
sigalrm_handler(int signum)
{
pid_t pid = getpid();
sigalrm_handler(int signum)
{
pid_t pid = getpid();
-
kprintf(KWARN
"I, pid %d, have received an alarm!\n", pid);
+
printf(
"I, pid %d, have received an alarm!\n", pid);
}
void __USER__
_signal_demo_main()
{
}
void __USER__
_signal_demo_main()
{
- signal(
_
SIGCHLD, sigchild_handler);
- signal(
_
SIGSEGV, sigsegv_handler);
- signal(
_
SIGALRM, sigalrm_handler);
+ signal(SIGCHLD, sigchild_handler);
+ signal(SIGSEGV, sigsegv_handler);
+ signal(SIGALRM, sigalrm_handler);
alarm(5);
int status;
pid_t p = 0;
alarm(5);
int status;
pid_t p = 0;
-
kprintf(KINFO
"Child sleep 3s, parent pause.\n");
+
printf(
"Child sleep 3s, parent pause.\n");
if (!fork()) {
sleep(3);
_exit(0);
if (!fork()) {
sleep(3);
_exit(0);
@@
-48,36
+47,32
@@
_signal_demo_main()
pause();
pause();
-
k
printf("Parent resumed on SIGCHILD\n");
+ printf("Parent resumed on SIGCHILD\n");
for (int i = 0; i < 5; i++) {
pid_t pid = 0;
if (!(pid = fork())) {
for (int i = 0; i < 5; i++) {
pid_t pid = 0;
if (!(pid = fork())) {
- signal(
_
SIGSEGV, sigsegv_handler);
+ signal(SIGSEGV, sigsegv_handler);
sleep(i);
if (i == 3) {
i = *(int*)0xdeadc0de; // seg fault!
}
sleep(i);
if (i == 3) {
i = *(int*)0xdeadc0de; // seg fault!
}
-
kprintf(KINFO
"%d\n", i);
+
printf(
"%d\n", i);
_exit(0);
}
_exit(0);
}
-
kprintf(KINFO
"Forked %d\n", pid);
+
printf(
"Forked %d\n", pid);
}
while ((p = wait(&status)) >= 0) {
short code = WEXITSTATUS(status);
if (WIFSIGNALED(status)) {
}
while ((p = wait(&status)) >= 0) {
short code = WEXITSTATUS(status);
if (WIFSIGNALED(status)) {
- kprintf(KINFO "Process %d terminated by signal, exit_code: %d\n",
- p,
- code);
+ printf("Process %d terminated by signal, exit_code: %d\n", p, code);
} else if (WIFEXITED(status)) {
} else if (WIFEXITED(status)) {
-
kprintf(KINFO
"Process %d exited with code %d\n", p, code);
+
printf(
"Process %d exited with code %d\n", p, code);
} else {
} else {
-
kprintf(KWARN
"Process %d aborted with code %d\n", p, code);
+
printf(
"Process %d aborted with code %d\n", p, code);
}
}
}
}
- kprintf("done\n");
-
- spin();
+ printf("done\n");
}
\ No newline at end of file
}
\ No newline at end of file