ちょっと仕事で悩んだのでメモ。
int request_irq( unsigned int irq, void ( *handler )( int, void * ), unsigned long irqflags, const char *devname, void *dev_id );
request_irqのdevnameは、自動変数を指定してはならない。
static変数化、文字列リテラルを指定すること。
kernelを追ったわけではないが、以下想像。
devnameで自動変数を指定できるようにすると、kernelはその値をコピーして内部で保持しなくてはならない。
その際の領域確保処理が無駄だし、文字列長を無制限にするわけにもいかないので、文字列リテラルのポインタだけ保持したほうがシンプルになる。
でも、それならそうと、どこかに書いておいてほしかったな〜。
もしかして、constがそれを示しているのか?
でも、constはそういう意味ではなかったような…。