亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtsock-test.c

?? fsmlabs的real time linux的內核
?? C
字號:
/* * rtsock-test.c - version 1.0 * * Written by Robert Kavaler, 1998-2002 * * Copyright (C) 1998-2002, Innomedia, Inc. * All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: *  * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer.  * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution.  * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */#include <linux/module.h>#include <linux/version.h>#include <linux/sched.h>#include <linux/kernel.h>#include <linux/slab.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/types.h>#include <linux/proc_fs.h>#include <linux/fcntl.h>#include <linux/pci.h>#include <linux/ioctl.h>#include <linux/mm.h>#include <linux/socket.h>#include <linux/file.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/ip.h>#include <linux/tcp.h>#include <linux/skbuff.h>#include <linux/udp.h>#include <net/ip.h>#include <asm/system.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/semaphore.h>#include <asm/checksum.h>#include <rtl.h>#include <rtl_sched.h>#include <rtl_sync.h>#include <rtl_fifo.h>#include <rtsock.h>MODULE_AUTHOR("(C) Robert Kavaler, 1998-2003");MODULE_LICENSE("GPL v2");MODULE_DESCRIPTION("RT-Socket test module");struct MySock {				// rt side structure "above" sock layer					// one mysock per sock	int index;	int local1;	int local2;	int received;	struct sock *sock;	struct RtSock *rtsock;};struct packet {				// packet contents for sending	long field1;	long field2;};spinlock_t g_spinlock;			// a global spinlockstatic pthread_t thread = NULL;		// global thread for this teststruct RtSock *g_rtsock;		// global rtsockstatic int period = 500;		// period is 500us (i.e. 2KHz)#define	MAX_MYSOCKS		16struct MySock MySockList[MAX_MYSOCKS];	// a double-link list would be better!voidrtprintf(char *format, ...){        char s[256];        va_list ap;        va_start(ap, format);        vsprintf(s, format, ap);        va_end(ap);        rtf_put(0, s, strlen(s));}intrtsock_interface(void *vrtsock, struct sock *s, unsigned long arg){	DECLARE_MUTEX(ioctlSemaphore);	struct RtSock *rtsock = vrtsock, *srtsock;	struct MySock *m;	int fd, index, operation;	int *intp = (int *) arg;	get_user(fd, intp++);	get_user(operation, intp++);	if(operation == 0) {				// insert new sock into rt list				// look for unused mysocks		down(&ioctlSemaphore);		for(m=MySockList; m<MySockList+MAX_MYSOCKS; m++) {			if(m->rtsock == NULL) {				break;			}		}		up(&ioctlSemaphore);		index = m-MySockList;		put_user(index, intp++);	} else {		get_user(index, intp++);	}	if(index < 0 || index >= MAX_MYSOCKS) {		return -EINVAL;	}	m = &MySockList[index];	switch(operation) {	case 0:				// creates a new mysock		m->index = index;		m->sock = s;		rtsock_reference_sock(rtsock, m->sock);		m->sock->user_data = m;		get_user(m->local1, intp++);		get_user(m->local2, intp++);		m->received = 0;		m->rtsock = rtsock;	// makes it visible to rt side		return 0;	case 1:			// change parameters of a sock			// rt mutex needed here mutex here		write_lock(&g_spinlock);		get_user(m->local1, intp++);		get_user(m->local2, intp++);		write_unlock(&g_spinlocal);		return 0;	case 2:			// delete sock from rt list		m = &MySockList[index];		srtsock = m->rtsock;		m->rtsock = NULL;	// makes it invisible to rt side		m->sock->user_data = NULL;		rtsock_dereference_sock(srtsock, m->sock);		return 0;	}	return -1;}                                  static void *mainloop(void *x){	struct MySock *m;	struct sk_buff *skb;	struct packet *p;	int  i, delta;	hrtime_t reftime;        pthread_make_periodic_np(pthread_self(), gethrtime(), period*1000);	reftime = gethrtime();        while(1) {		pthread_wait_np();		for(i=0; i<MAX_MYSOCKS; i++) {			m = &MySockList[i];			if(m->rtsock && m->local1) {	// send a packet on every sock every tick				skb = rtsock_alloc_skb(m->rtsock);				if(!skb) {					rtprintf("cannot alloc skb\n");					continue;				}				skb_set_owner_w(skb, m->sock);				p = (struct packet *) 					__skb_put(skb, sizeof(struct packet));				p->field1 = htonl(m->local1);				p->field2 = htonl(m->local2);				m->local2++;				rtsock_enqueue_skb(m->rtsock, skb);			}		}	// receive all packets to this rtsock		while((skb=rtsock_dequeue_skb(g_rtsock))) {			if((m=skb->sk->user_data)) {				m->received++;				if(m->received > 10000) {					delta = (gethrtime()-reftime)/1000000;					m->received = 0;					rtprintf("%d.%03d received 10K packets on index %d\n", delta/1000, delta%1000, m->index);				}			}			rtsock_free_skb(g_rtsock, skb);		}        }        return NULL;}int init_module(void){	pthread_attr_t attr;	struct sched_param p;	int  i;	printk("rtsock-test Copyright(c)1998-2002 Innomedia Inc. (R Kavaler)\n");	rtf_create(0, 8192);		// used for printf messages        if((g_rtsock = rtsock_create(0, 128, 128, 256)) == NULL) {		printk("rtpsock cannot create rtsock.\n");		return -ENOMEM;        }	rtsock_register_callback(g_rtsock, rtsock_interface, g_rtsock);	pthread_attr_init(&attr);	p.sched_priority = 1;	pthread_attr_setschedparam(&attr, &p);	if(pthread_create(&thread, &attr, mainloop, NULL) < 0) {		rtsock_destroy(g_rtsock);		return -ENOMEM;	}	for(i=0; i<MAX_MYSOCKS; i++) {		MySockList[i].rtsock = NULL;	}	return 0;}void cleanup_module(void){	int  i;	struct RtSock *srtsock;	struct MySock *m;	for(i=0; i<MAX_MYSOCKS; i++) {		m = &MySockList[i];		if(m->rtsock) {			srtsock = m->rtsock;			m->rtsock = NULL;	// makes it invisible to rt side			m->sock->user_data = NULL;			rtsock_dereference_sock(srtsock, m->sock);		}	}	rtsock_destroy(g_rtsock);	pthread_delete_np(thread);	rtf_destroy(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色图第一页| 亚洲免费观看在线观看| 久久久www成人免费无遮挡大片| 一色屋精品亚洲香蕉网站| 日本三级韩国三级欧美三级| caoporen国产精品视频| 欧美区在线观看| 亚洲乱码国产乱码精品精可以看| 国产主播一区二区三区| 欧美猛男超大videosgay| 中文字幕亚洲区| 国产福利一区二区三区视频 | 久久久久成人黄色影片| 日韩av不卡一区二区| 欧美视频精品在线观看| 亚洲免费av在线| 99视频热这里只有精品免费| 国产偷国产偷精品高清尤物| 美女尤物国产一区| 日韩精品一区二区三区中文不卡| 亚洲高清视频中文字幕| 欧美午夜精品久久久久久超碰| 国产精品乱人伦一区二区| 国产在线观看免费一区| 日韩欧美一区中文| 日韩成人一级片| 欧美精品三级在线观看| 亚洲国产精品久久久久秋霞影院| 91在线观看高清| 亚洲精品国久久99热| 99久久国产综合精品色伊| 中文字幕一区二区三区乱码在线| 粉嫩aⅴ一区二区三区四区| 久久久久久久久蜜桃| 国产精品自产自拍| 国产女同性恋一区二区| 高潮精品一区videoshd| 亚洲欧美在线视频观看| 不卡一区二区在线| 综合久久国产九一剧情麻豆| 国产成人综合网| 中文字幕一区av| 欧美亚洲国产一区二区三区| 亚洲高清免费视频| 日韩欧美一级特黄在线播放| 精品一区二区三区视频在线观看 | 国产日韩一级二级三级| 国产v综合v亚洲欧| 亚洲青青青在线视频| 欧美日韩在线播放三区四区| 无码av免费一区二区三区试看| 欧美一区二区三区日韩视频| 久久99精品国产| 国产精品毛片a∨一区二区三区| 色综合久久88色综合天天6 | 亚洲人成影院在线观看| 色综合天天狠狠| 久久精品国产99国产| 国产精品欧美久久久久无广告 | 国产91丝袜在线播放0| 中文字幕在线一区| 欧美日本一区二区三区| 国产一区二区三区四区五区美女 | www国产成人| 91免费国产在线观看| 免费成人结看片| 中文字幕成人在线观看| 欧美性欧美巨大黑白大战| 久久爱www久久做| 亚洲日本青草视频在线怡红院| 欧美日韩精品一区视频| 成人免费黄色在线| 日本伊人精品一区二区三区观看方式| 久久久久久电影| 666欧美在线视频| 99久久99久久综合| 九九**精品视频免费播放| 亚洲自拍偷拍欧美| 久久久久久电影| 51精品视频一区二区三区| av中文字幕不卡| 久久超级碰视频| 亚洲主播在线播放| 中文字幕欧美一| 久久久99精品免费观看不卡| 欧美三级韩国三级日本三斤| 成人看片黄a免费看在线| 精品一区二区三区蜜桃| 性久久久久久久| ...xxx性欧美| 久久久久久久久久久久久夜| 欧美一区二区不卡视频| 在线免费观看日本一区| 国产成人高清视频| 国模一区二区三区白浆| 日韩—二三区免费观看av| 亚洲欧美日韩一区二区| 中文字幕二三区不卡| 久久久三级国产网站| 日韩一区二区免费在线电影| 欧美日韩一区二区在线视频| 一本大道综合伊人精品热热| 成人小视频在线| 国产精品88av| 国产成人亚洲精品青草天美| 激情欧美一区二区| 美腿丝袜亚洲一区| 美女性感视频久久| 免费看日韩精品| 男女男精品视频| 人人精品人人爱| 久久成人免费网站| 蜜桃一区二区三区四区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲国产乱码最新视频| 亚洲黄色尤物视频| 亚洲自拍偷拍欧美| 日韩在线一区二区| 日产精品久久久久久久性色| 日韩电影在线观看一区| 蜜乳av一区二区| 国产精品综合一区二区| 国产福利精品导航| 成人黄色av网站在线| 成人性生交大片免费| 97精品视频在线观看自产线路二| av在线不卡电影| 欧美三级电影在线观看| 91精品久久久久久久久99蜜臂| 日韩欧美视频一区| 欧美精品一区二区不卡| 久久综合狠狠综合| 国产精品你懂的在线| 亚洲激情五月婷婷| 美腿丝袜亚洲综合| 成人一区二区在线观看| 欧美中文字幕一区二区三区| 91精品欧美久久久久久动漫| 久久亚洲二区三区| 亚洲免费观看高清在线观看| 婷婷成人激情在线网| 国内久久精品视频| 91浏览器在线视频| 日韩欧美一级二级三级久久久 | 欧美岛国在线观看| 中文字幕免费不卡| 亚洲一区二区av电影| 麻豆精品久久久| a级高清视频欧美日韩| 欧美高清视频一二三区| 久久你懂得1024| 亚洲影院久久精品| 国产成人午夜精品5599| 在线观看视频欧美| 欧美大肚乱孕交hd孕妇| 亚洲色图清纯唯美| 日韩影院精彩在线| 成人av片在线观看| 日韩午夜电影av| 亚洲品质自拍视频| 国产综合久久久久影院| 欧美亚洲国产怡红院影院| 久久看人人爽人人| 三级精品在线观看| 高清不卡在线观看av| 欧美一区二区三区色| 中文字幕一区二区三区乱码在线| 麻豆成人久久精品二区三区小说| 99精品国产视频| 欧美激情中文字幕| 毛片av一区二区| 欧美日韩一区二区欧美激情| 国产精品麻豆网站| 国产精品正在播放| 日韩亚洲欧美一区二区三区| 亚洲激情自拍偷拍| 99在线精品一区二区三区| 久久久久99精品国产片| 青青草国产成人av片免费| 色网综合在线观看| 国产精品国产a级| 国产成人在线视频播放| 欧美大片一区二区| 日韩成人精品在线| 欧美一区日本一区韩国一区| 亚洲午夜电影在线观看| 91在线视频网址| 中文字幕一区二区三区乱码在线| 国产乱妇无码大片在线观看| 精品国产sm最大网站免费看| 奇米精品一区二区三区在线观看 | 欧美久久久一区| 亚洲一卡二卡三卡四卡五卡| 91久久精品一区二区三| 亚洲色图视频免费播放| 色94色欧美sute亚洲线路一久 | 国产精品久久午夜夜伦鲁鲁| 成人18视频日本| 国产精品乱子久久久久| 91麻豆精东视频|