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

📄 proc_start_stop.c

📁 fsmlabs的real time linux的内核
💻 C
字号:
#include <rtl.h>#include <time.h>#include <rtl_time.h>#include <pthread.h>#include <linux/proc_fs.h> /* create_proc_entry remove_proc_entry */pthread_t thread;hrtime_t start_nanosec;MODULE_LICENSE("GPL v2");MODULE_AUTHOR("Der Herr Hofrat");MODULE_DESCRIPTION("simple proc example");static int running=1;struct proc_dir_entry *proc_thread_status;void * start_routine(void *arg){	int i=0;	struct sched_param p;	hrtime_t elapsed_time,now;	p . sched_priority = 1;	pthread_setschedparam (pthread_self(), SCHED_FIFO, &p);	pthread_make_periodic_np (pthread_self(), gethrtime(), 500000000);	while (running) {		pthread_wait_np ();		now = clock_gethrtime(CLOCK_REALTIME);		elapsed_time = now - start_nanosec;		rtl_printf("elapsed_time = %Ld\n",(long long)elapsed_time);		i++;	}	return (void *)i;}int get_status(	char *page,	char **start, 	off_t off, 	int count,	int *eof, 	void *data){	int size = 0;    	MOD_INC_USE_COUNT;		size+=sprintf(page+size,"Thread State:%d\n",(int)running);	MOD_DEC_USE_COUNT;	return(size);}static int set_status(	struct file *file, 	const char *user_buffer,	unsigned long count, 	void *data){	MOD_INC_USE_COUNT;	/* brute force atoi - values should be checked in real apps */	running=(int)*user_buffer-'0';	printk("terminating rt-thread - set running to %x\n",running);	MOD_DEC_USE_COUNT;	return count;}  int init_module(void) {	int retval;	start_nanosec = clock_gethrtime(CLOCK_REALTIME);	retval = pthread_create (&thread, NULL, start_routine, 0);	if(retval){		printk("pthread create failed\n");		return -1;	}	proc_thread_status = create_proc_entry("thread_status",        S_IFREG | S_IWUSR,        &proc_root);	proc_thread_status->read_proc = get_status;	proc_thread_status->write_proc = set_status;	return 0;}void cleanup_module(void) {	void * ret_val;	pthread_cancel(thread);	pthread_join(thread,&ret_val);	printk("Thread terminated with %d\n",(int)ret_val);    	remove_proc_entry("thread_status", &proc_root);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -