下面黑體部分均爲打印信息:
<6>[ 1903.836139] [cpuid: 0] Calling CRDA to update world regulatory domain
/*compat-wireless/net/wireless/reg.c: call_crda()*/
<6>[ 1903.836296] [cpuid: 0] World regulatory domain updated:
/*compat-wireless/net/wireless/reg.c: print_regdomain()*/
<6>[ 1903.836308] [cpuid: 0] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
<6>[ 1903.836323] [cpuid: 0] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
<6>[ 1903.836336] [cpuid: 0] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
<6>[ 1903.836349] [cpuid: 0] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
<6>[ 1903.836361] [cpuid: 0] (5140000 KHz - 5360000 KHz @ 40000 KHz), (N/A, 3000 mBm)
<6>[ 1903.836374] [cpuid: 0] (5460000 KHz - 5860000 KHz @ 40000 KHz), (N/A, 3000 mBm)
/*compat-wireless/net/wireless/reg.c:print_rd_rules()**/
下面爲函數調用流程(從call_crda()出發,
後面會分析從cfg80211開始到調用call_crda()的過程)
//下面註釋:“---->”表示調用下一個函數;“<----”表示被下一個函數調用
/*
* This lets us keep regulatory code which is updated on a regulatory
* basis in userspace. Country information is filled in by
* reg_device_uevent
*/
call_crda()
---->reg_regdb_query()
----->schedule_work(®_regdb_work);
//static DECLARE_WORK(reg_regdb_work, reg_regdb_search);
----->reg_regdb_search()
----->set_regdom()
/*
* Use this call to set the current regulatory domain. Conflicts with
* multiple drivers can be ironed out later. Caller must've already
* kmalloc'd the rd structure. Caller must hold cfg80211_mutex
*/
set_regdom()
--->print_regdomain()