📄 hello.c
字号:
/* * POSIX.1 Signals test program * * Written by J. Vidal * Copyright (C) Dec, 2002 OCERA Consortium. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2. * * Simple test program implementing the "Hello world" program from a * signal handler. * */#include <rtl.h>#include <rtl_sched.h>#define MAX_TASKS 2#define MY_SIGNAL RTL_SIGUSR2static pthread_t thread[MAX_TASKS];static void signal_handler(int sig){ int i; for (i=0;i<2;i++) rtl_printf(">--------------------------------------->\n"); rtl_printf("Hello world! Signal handler called for signal:%d\n",sig); for (i=0;i<2;i++) rtl_printf("<---------------------------------------<\n"); }static void * start_routine(void *arg){ int i=0,err=0,signal; struct sched_param p; struct sigaction sa; rtl_sigset_t set; p . sched_priority = 1; pthread_setschedparam (pthread_self(), SCHED_FIFO, &p); signal=MY_SIGNAL+(unsigned) arg; rtl_sigfillset(&set); rtl_sigdelset(&set,signal); pthread_sigmask(SIG_SETMASK,&set,NULL); sa.sa_handler=signal_handler; sa.sa_mask=0; sa.sa_flags=0; sa.sa_focus=0; if ((err=sigaction(signal,&sa,NULL))<0 ) rtl_printf("sigaction(%d,&sa,NULL) FAILING, err:%d, errno:%d.\n",signal,err,errno); pthread_make_periodic_np (pthread_self(), gethrtime(), (long long)250*1000*1000+ (long long)250*1000*1000*(unsigned) arg); rtl_printf("I'm here; my arg is %x iter:%d\n",(unsigned) arg,i++); rtl_printf("When i mod 5 -> pthread_kill(pthread_self(),%d)\n",signal); while (i<=40) { pthread_wait_np (); if (!(i%5)) pthread_kill(pthread_self(),signal); rtl_printf("I'm here; my arg is %x iter:%d\n",(unsigned) arg,i++); } rtl_printf("\n\n\n THREAD %d about to end\n\n\n",(unsigned) arg); return 0;}int init_module(void) { int i,err=0; for (i=0;i<MAX_TASKS;i++) err=pthread_create (&thread[i], NULL, start_routine,(void *) i); return err;}void cleanup_module(void) { int i; for (i=0;i<MAX_TASKS;i++) pthread_delete_np (thread[i]);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -