下面是裝載驅動模組時的引數,即使你在載入模組的時候不傳入引數,也會有預設的引數。
如果編譯時沒有指定config_usb_file_storage_test
,則只能使用部分引數
module_param_array_named(file,mod_data.file, charp, &mod_data.num_filenames, s_irugo);
module_parm_desc(file,"names of backing files or devices");
module_param_array_named(ro,mod_data.ro, bool, &mod_data.num_ros, s_irugo);
module_parm_desc(ro,"true to force read-only");
module_param_named(luns,mod_data.nluns, uint, s_irugo);
module_parm_desc(luns,"number of luns");
module_param_named(removable,mod_data.removable, bool, s_irugo);
module_parm_desc(removable,"true to simulate removable media");
module_param_named(stall,mod_data.can_stall, bool, s_irugo);
module_parm_desc(stall,"false to prevent bulk stalls");
module_param_named(cdrom,mod_data.cdrom, bool, s_irugo);
module_parm_desc(cdrom,"true to emulate cdrom instead of disk");
#ifdefconfig_usb_file_storage_test
module_param_named(transport,mod_data.transport_parm, charp, s_irugo);
module_parm_desc(transport,"type of transport (bbb, cbi, or cb)");
module_param_named(protocol,mod_data.protocol_parm, charp, s_irugo);
module_parm_desc(protocol,"type of protocol (rbc, 8020, qic, ufi, ""8070, orscsi)");
module_param_named(vendor,mod_data.vendor, ushort, s_irugo);
module_parm_desc(vendor,"usb vendor id");
module_param_named(product,mod_data.product, ushort, s_irugo);
module_parm_desc(product,"usb product id");
module_param_named(release,mod_data.release, ushort, s_irugo);
module_parm_desc(release,"usb release number");
module_param_named(buflen,mod_data.buflen, uint, s_irugo);
module_parm_desc(buflen,"i/o buffer size");
#endif/* config_usb_file_storage_test */
大儲存裝置的儲存通過常規檔案或塊裝置來實現,它通過模組選項"file"選擇大儲存裝置檔案。通過模組選項"ro"限制訪問許可權。如果可選的模組選項"removable",指示它是否是乙個可移去的介質。
大儲存裝置可以有多個邏輯單元(lun),每個lun有自己的檔案,lun的數量由可選的模組選項"luns"(1到8)選擇,相應的檔案用逗號分開的"file"或"or"的列表定義。預設的lun個數從"file"元素的個數獲取,如果"file"沒有被提供,則為1。如果"removable"沒有被設定,那麼,每個lun必須指定檔案。如果"removable"被設定,乙個沒定義或空的檔名意味著lun的介質沒有裝載。
裝置支援控制-批量(cbcontrol-bulk),控制-批量-中斷(cbicontrol-bulk-interrupt)和僅批量(bulk-only)傳輸,通過可選的"transport"模組選項來選擇。它還支援下面的協議:rbc(0x01), atapi或sff-8020i(0x02), qic-157 (0c03),通過可選的"protocol"模組選項來選擇。
記憶體最小的要求是2個16k的buffer,可通過引數配置buffer的大小。
表:大儲存裝置的模組選項選項說明
模組選項 說明
file=filename[,filename...] 如果
"removable"
沒被設定,用於儲存的檔案或塊裝置名是需要的。
ro=b[,b...]
預設是false,
僅讀訪問的邏輯值。
removable
預設是false,
可移去**的邏輯值。
luns=n
預設值n=檔名的個數是支援的
lun的個數。
transport=***
預設值是
bbb(
bulk-only),
傳輸名(cb,cbi, or bbb)。
protocol=yyy
預設值是
scsi,
協議名(rbc,8020
或atapi,qic, ufi, 8070,
或scsi
,也有可能
1-6項都支援)。
vendor=0xvvvv
預設值是
0x0525(netchip), usb
**商id。
product=0xpppp
預設值是
0xa4a5(fsg), usb
產品id。
release=0xrrrr
usb發布號(bcddevice)。
buflen=n
預設值n=16384,
使用的buffer大小(
是頁大小的整數倍)。
stall 按照
usb裝置控制器的型別來決定預設值(通常是
true
),是否允許驅動程式停止
bulk
端點的邏輯值。
linux下的應用模組傳參及驅動模組傳參的區別
在使用者態下程式設計可以通過main intargc,char argv 來傳遞命令列引數,而編寫乙個核心模組則通過module param 來傳遞引數 一.應用程式命令列傳參 執行結果如下 二.核心模組傳參 module param name,type,perm 是乙個巨集,表示向當前模組傳入引數...
linux 核心模組傳參
標頭檔案在 include linux moduleparam.h 核心模組可以通過module param來傳單個引數 module param name,type,perm name 模組引數的名稱 type 模組引數的資料型別 支援int long short uint ulong ushor...
python argparse 模組命令列引數解析
argparse 是 python 的乙個命令列解析包,可根據需要編寫高可讀性的程式。網上的許多教程較為冗長和散漫,沒有達到精練好掌握的目的,本文針對專案中對 argparse 的用法,用例項對各個引數進行講解,力求達到讓讀者秒懂的目的。先上 import argparse if name main...