[問題] 請教在Driver這兩種宣告的方式有何好壞處

作者: greenlinux (GreenLinux)   2013-12-05 00:46:17
請教各位:
像以下的程式架構:
#include xxx.h
..............
static int data[1000];
void get_data()
{
for (i=0; i<1000;i++)
data[i] = some_process();
}
void save_data(int status)
{
save(data);
}
int interrupt_will_do()
{
get_data();
save_data(Now_Status);
}
data[1000]這個 matrix 會一直在get_data()更新然後做save_data()等處理
這樣的話, (1)到底data[]像以上的方式宣告在driver的一開始較好(因為這樣
只需要宣告一次), 還是
(2)每次進入get_data()再宣告,然後將data[]的pointer傳給save_data()較好??
或是(3) 在driver code一開始用 struct 的方式宣告, 然後在 get_data()
及 save_data 以 some_struct.data[] 來處理較好????
謝謝各位的指導..
作者: yvb   2013-02-07 01:42:00
(2) 如果 data 不是 static, 那就要注意是否會發生C_and_CPP 置底十三誡之第5誡或第6誡之狀況.如果是 static, 感覺沒太大差別, 只是 variable scope 問題.若要考慮未來可能多個instances,那(3)或許是較佳選項,但可能會是 some_struct_pointer->data[] ?
作者: greenlinux (GreenLinux)   2013-02-07 14:33:00
To yvb: 謝謝你的指導
作者: Bode123 (中肯寶寶)   2013-02-13 16:59:00
2 作法有問題 離開後區域變數值就被其他東西改了1跟3不差不多意思吧 我覺得1 3兩個都可但要注意是否需要LOCK一下
作者: leolarrel (真.粽子無雙)   2013-02-21 11:38:00
要考慮到,driver是在kernel 的環境執行,stack 大小不是無限制的

Links booklink

Contact Us: admin [ a t ] ucptt.com