⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hello.c

📁 最新rtlinux内核源码
💻 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 + -