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

📄 arlan-proc.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 2 页
字号:
		retv = proc_dostring(ctl, write, filp, buffer, lenp, ppos);	else	{		*lenp = 0;		return -1;	}	return retv;}static int arlan_sysctl_info161719(ctl_table * ctl, int write, struct file *filp,			    void __user *buffer, size_t * lenp, loff_t *ppos){	int i;	int retv, pos, devnum;	struct arlan_private *priva = NULL;	pos = 0;	devnum = ctl->procname[5] - '0';	if (arlan_device[devnum] == NULL)	{		pos += sprintf(arlan_drive_info + pos, "No device found here \n");		goto final;	}	else		priva = arlan_device[devnum]->priv;	if (priva == NULL)	{		printk(KERN_WARNING " Could not find the device private in arlan procsys, bad\n ");		return -1;	}	memcpy_fromio(priva->conf, priva->card, sizeof(struct arlan_shmem));	SARLUCN(_16, 0xC0);	SARLUCN(_17, 0x6A);	SARLUCN(_18, 14);	SARLUCN(_19, 0x86);	SARLUCN(_21, 0x3fd);final:	*lenp = pos;	retv = proc_dostring(ctl, write, filp, buffer, lenp, ppos);	return retv;}static int arlan_sysctl_infotxRing(ctl_table * ctl, int write, struct file *filp,			    void __user *buffer, size_t * lenp, loff_t *ppos){	int i;	int retv, pos, devnum;	struct arlan_private *priva = NULL;	pos = 0;	devnum = ctl->procname[5] - '0';	if (arlan_device[devnum] == NULL)	{		  pos += sprintf(arlan_drive_info + pos, "No device found here \n");		  goto final;	}	else		priva = arlan_device[devnum]->priv;	if (priva == NULL)	{		printk(KERN_WARNING " Could not find the device private in arlan procsys, bad\n ");		return -1;	}	memcpy_fromio(priva->conf, priva->card, sizeof(struct arlan_shmem));	SARLBNpln(u_char, txBuffer, 0x800);final:	*lenp = pos;	retv = proc_dostring(ctl, write, filp, buffer, lenp, ppos);	return retv;}static int arlan_sysctl_inforxRing(ctl_table * ctl, int write, struct file *filp,			    void __user *buffer, size_t * lenp, loff_t *ppos){	int i;	int retv, pos, devnum;	struct arlan_private *priva = NULL;	pos = 0;	devnum = ctl->procname[5] - '0';	if (arlan_device[devnum] == NULL)	{		  pos += sprintf(arlan_drive_info + pos, "No device found here \n");		  goto final;	} else		priva = arlan_device[devnum]->priv;	if (priva == NULL)	{		printk(KERN_WARNING " Could not find the device private in arlan procsys, bad\n ");		return -1;	}	memcpy_fromio(priva->conf, priva->card, sizeof(struct arlan_shmem));	SARLBNpln(u_char, rxBuffer, 0x800);final:	*lenp = pos;	retv = proc_dostring(ctl, write, filp, buffer, lenp, ppos);	return retv;}static int arlan_sysctl_info18(ctl_table * ctl, int write, struct file *filp,			void __user *buffer, size_t * lenp, loff_t *ppos){	int i;	int retv, pos, devnum;	struct arlan_private *priva = NULL;	pos = 0;	devnum = ctl->procname[5] - '0';	if (arlan_device[devnum] == NULL)	{		pos += sprintf(arlan_drive_info + pos, "No device found here \n");		goto final;	}	else		priva = arlan_device[devnum]->priv;	if (priva == NULL)	{		printk(KERN_WARNING " Could not find the device private in arlan procsys, bad\n ");		return -1;	}	memcpy_fromio(priva->conf, priva->card, sizeof(struct arlan_shmem));	SARLBNpln(u_char, _18, 0x800);final:	*lenp = pos;	retv = proc_dostring(ctl, write, filp, buffer, lenp, ppos);	return retv;}#endif				/* #ifdef ARLAN_PROC_SHM_DUMP */static char conf_reset_result[200];static int arlan_configure(ctl_table * ctl, int write, struct file *filp,		    void __user *buffer, size_t * lenp, loff_t *ppos){	int pos = 0;	int devnum = ctl->procname[6] - '0';	struct arlan_private *priv;	if (devnum < 0 || devnum > MAX_ARLANS - 1)	{		  printk(KERN_WARNING "too strange devnum in procfs parse\n ");		  return -1;	}	else if (arlan_device[devnum] != NULL)	{		  priv = arlan_device[devnum]->priv;		  arlan_command(arlan_device[devnum], ARLAN_COMMAND_CLEAN_AND_CONF);	}	else		return -1;	*lenp = pos;	return proc_dostring(ctl, write, filp, buffer, lenp, ppos);}static int arlan_sysctl_reset(ctl_table * ctl, int write, struct file *filp,		       void __user *buffer, size_t * lenp, loff_t *ppos){	int pos = 0;	int devnum = ctl->procname[5] - '0';	struct arlan_private *priv;	if (devnum < 0 || devnum > MAX_ARLANS - 1)	{		  printk(KERN_WARNING "too strange devnum in procfs parse\n ");		  return -1;	}	else if (arlan_device[devnum] != NULL)	{		priv = arlan_device[devnum]->priv;		arlan_command(arlan_device[devnum], ARLAN_COMMAND_CLEAN_AND_RESET);	} else		return -1;	*lenp = pos + 3;	return proc_dostring(ctl, write, filp, buffer, lenp, ppos);}/* Place files in /proc/sys/dev/arlan */#define CTBLN(num,card,nam) \        { .ctl_name = num,\          .procname = #nam,\          .data = &(arlan_conf[card].nam),\          .maxlen = sizeof(int), .mode = 0600, .proc_handler = &proc_dointvec}#ifdef ARLAN_DEBUGGING#define ARLAN_PROC_DEBUG_ENTRIES \        { .ctl_name = 48, .procname = "entry_exit_debug",\          .data = &arlan_entry_and_exit_debug,\          .maxlen = sizeof(int), .mode = 0600, .proc_handler = &proc_dointvec},\	{ .ctl_name = 49, .procname = "debug", .data = &arlan_debug,\          .maxlen = sizeof(int), .mode = 0600, .proc_handler = &proc_dointvec},#else #define ARLAN_PROC_DEBUG_ENTRIES#endif#define ARLAN_SYSCTL_TABLE_TOTAL(cardNo)\	CTBLN(1,cardNo,spreadingCode),\	CTBLN(2,cardNo, channelNumber),\	CTBLN(3,cardNo, scramblingDisable),\	CTBLN(4,cardNo, txAttenuation),\	CTBLN(5,cardNo, systemId), \	CTBLN(6,cardNo, maxDatagramSize),\	CTBLN(7,cardNo, maxFrameSize),\	CTBLN(8,cardNo, maxRetries),\	CTBLN(9,cardNo, receiveMode),\	CTBLN(10,cardNo, priority),\	CTBLN(11,cardNo, rootOrRepeater),\	CTBLN(12,cardNo, SID),\	CTBLN(13,cardNo, registrationMode),\	CTBLN(14,cardNo, registrationFill),\	CTBLN(15,cardNo, localTalkAddress),\	CTBLN(16,cardNo, codeFormat),\	CTBLN(17,cardNo, numChannels),\	CTBLN(18,cardNo, channel1),\	CTBLN(19,cardNo, channel2),\	CTBLN(20,cardNo, channel3),\	CTBLN(21,cardNo, channel4),\	CTBLN(22,cardNo, txClear),\	CTBLN(23,cardNo, txRetries),\	CTBLN(24,cardNo, txRouting),\	CTBLN(25,cardNo, txScrambled),\	CTBLN(26,cardNo, rxParameter),\	CTBLN(27,cardNo, txTimeoutMs),\	CTBLN(28,cardNo, waitCardTimeout),\	CTBLN(29,cardNo, channelSet), \	{.ctl_name = 30, .procname = "name",\	 .data = arlan_conf[cardNo].siteName,\	 .maxlen = 16, .mode = 0600, .proc_handler = &proc_dostring},\	CTBLN(31,cardNo,waitTime),\	CTBLN(32,cardNo,lParameter),\	CTBLN(33,cardNo,_15),\	CTBLN(34,cardNo,headerSize),\	CTBLN(36,cardNo,tx_delay_ms),\	CTBLN(37,cardNo,retries),\	CTBLN(38,cardNo,ReTransmitPacketMaxSize),\	CTBLN(39,cardNo,waitReTransmitPacketMaxSize),\	CTBLN(40,cardNo,fastReTransCount),\	CTBLN(41,cardNo,driverRetransmissions),\	CTBLN(42,cardNo,txAckTimeoutMs),\	CTBLN(43,cardNo,registrationInterrupts),\	CTBLN(44,cardNo,hardwareType),\	CTBLN(45,cardNo,radioType),\	CTBLN(46,cardNo,writeEEPROM),\	CTBLN(47,cardNo,writeRadioType),\	ARLAN_PROC_DEBUG_ENTRIES\	CTBLN(50,cardNo,in_speed),\	CTBLN(51,cardNo,out_speed),\	CTBLN(52,cardNo,in_speed10),\	CTBLN(53,cardNo,out_speed10),\	CTBLN(54,cardNo,in_speed_max),\	CTBLN(55,cardNo,out_speed_max),\	CTBLN(56,cardNo,measure_rate),\	CTBLN(57,cardNo,pre_Command_Wait),\	CTBLN(58,cardNo,rx_tweak1),\	CTBLN(59,cardNo,rx_tweak2),\	CTBLN(60,cardNo,tx_queue_len),\static ctl_table arlan_conf_table0[] ={	ARLAN_SYSCTL_TABLE_TOTAL(0)#ifdef ARLAN_PROC_SHM_DUMP	{		.ctl_name	= 150,		.procname	= "arlan0-txRing",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_infotxRing,	},	{		.ctl_name	= 151,		.procname	= "arlan0-rxRing",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_inforxRing,	},	{		.ctl_name	= 152,		.procname	= "arlan0-18",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info18,	},	{		.ctl_name	= 153,		.procname	= "arlan0-ring",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info161719,	},	{		.ctl_name	= 154,		.procname	= "arlan0-shm-cpy",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info,	},#endif	{		.ctl_name	= 155,		.procname	= "config0",		.data		= &conf_reset_result,		.maxlen		= 100,		.mode		= 0400,		.proc_handler	= &arlan_configure	},	{		.ctl_name	= 156,		.procname	= "reset0",		.data		= &conf_reset_result,		.maxlen		= 100,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_reset,	},	{ .ctl_name = 0 }};static ctl_table arlan_conf_table1[] ={	ARLAN_SYSCTL_TABLE_TOTAL(1)#ifdef ARLAN_PROC_SHM_DUMP	{		.ctl_name	= 150,		.procname	= "arlan1-txRing",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_infotxRing,	},	{		.ctl_name	= 151,		.procname	= "arlan1-rxRing",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_inforxRing,	},	{		.ctl_name	= 152,		.procname	= "arlan1-18",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info18,	},	{		.ctl_name	= 153,		.procname	= "arlan1-ring",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info161719,	},	{		.ctl_name	= 154,		.procname	= "arlan1-shm-cpy",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info,	},#endif	{		.ctl_name	= 155,		.procname	= "config1",		.data		= &conf_reset_result,		.maxlen		= 100,		.mode		= 0400,		.proc_handler	= &arlan_configure,	},	{		.ctl_name	= 156,		.procname	= "reset1",		.data		= &conf_reset_result,		.maxlen		= 100,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_reset,	},	{ .ctl_name = 0 }};static ctl_table arlan_conf_table2[] ={	ARLAN_SYSCTL_TABLE_TOTAL(2)#ifdef ARLAN_PROC_SHM_DUMP	{		.ctl_name	= 150,		.procname	= "arlan2-txRing",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_infotxRing,	},	{		.ctl_name	= 151,		.procname	= "arlan2-rxRing",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_inforxRing,	},	{		.ctl_name	= 152,		.procname	= "arlan2-18",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info18,	},	{		.ctl_name	= 153,		.procname	= "arlan2-ring",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info161719,	},	{		.ctl_name	= 154,		.procname	= "arlan2-shm-cpy",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info,	},#endif	{		.ctl_name	= 155,		.procname	= "config2",		.data		= &conf_reset_result,		.maxlen		= 100,		.mode		= 0400,		.proc_handler	= &arlan_configure,	},	{		.ctl_name	= 156,		.procname	= "reset2",		.data		= &conf_reset_result,		.maxlen		= 100,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_reset,	},	{ .ctl_name = 0 }};static ctl_table arlan_conf_table3[] ={	ARLAN_SYSCTL_TABLE_TOTAL(3)#ifdef ARLAN_PROC_SHM_DUMP	{		.ctl_name	= 150,		.procname	= "arlan3-txRing",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_infotxRing,	},	{		.ctl_name	= 151,		.procname	= "arlan3-rxRing",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_inforxRing,	},	{		.ctl_name	= 152,		.procname	= "arlan3-18",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info18,	},	{		.ctl_name	= 153,		.procname	= "arlan3-ring",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info161719,	},	{		.ctl_name	= 154,		.procname	= "arlan3-shm-cpy",		.data		= &arlan_drive_info,		.maxlen		= ARLAN_STR_SIZE,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_info,	},#endif	{		.ctl_name	= 155,		.procname	= "config3",		.data		= &conf_reset_result,		.maxlen		= 100,		.mode		= 0400,		.proc_handler	= &arlan_configure,	},	{		.ctl_name	= 156,		.procname	= "reset3",		.data		= &conf_reset_result,		.maxlen		= 100,		.mode		= 0400,		.proc_handler	= &arlan_sysctl_reset,	},	{ .ctl_name = 0 }};static ctl_table arlan_table[] ={	{		.ctl_name	= 0,		.procname	= "arlan0",		.maxlen		= 0,		.mode		= 0600,		.child		= arlan_conf_table0,	},	{		.ctl_name	= 0,		.procname	= "arlan1",		.maxlen		= 0,		.mode		= 0600,		.child		= arlan_conf_table1,	},	{		.ctl_name	= 0,		.procname	= "arlan2",		.maxlen		= 0,		.mode		= 0600,		.child		= arlan_conf_table2,	},	{		.ctl_name	= 0,		.procname	= "arlan3",		.maxlen		= 0,		.mode		= 0600,		.child		= arlan_conf_table3,	},	{ .ctl_name = 0 }};#elsestatic ctl_table arlan_table[MAX_ARLANS + 1] ={	{ .ctl_name = 0 }};#endif#elsestatic ctl_table arlan_table[MAX_ARLANS + 1] ={	{ .ctl_name = 0 }};#endif// static int mmtu = 1234;static ctl_table arlan_root_table[] ={	{		.ctl_name	= 254,		.procname	= "arlan",		.maxlen		= 0,		.mode		= 0555,		.child		= arlan_table,	},	{ .ctl_name = 0 }};/* Make sure that /proc/sys/dev is there *///static ctl_table arlan_device_root_table[] =//{//	{CTL_DEV, "dev", NULL, 0, 0555, arlan_root_table},//	{0}//};#ifdef CONFIG_PROC_FSstatic struct ctl_table_header *arlan_device_sysctl_header;int __init init_arlan_proc(void){	int i = 0;	if (arlan_device_sysctl_header)		return 0;	for (i = 0; i < MAX_ARLANS && arlan_device[i]; i++)		arlan_table[i].ctl_name = i + 1;	arlan_device_sysctl_header = register_sysctl_table(arlan_root_table, 0);	if (!arlan_device_sysctl_header)		return -1;	return 0;}void __exit cleanup_arlan_proc(void){	unregister_sysctl_table(arlan_device_sysctl_header);	arlan_device_sysctl_header = NULL;}#endif

⌨️ 快捷键说明

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