PM_STATE_UNKNOWN!!!

Personal Computer/Linux 2005. 6. 14. 08:40 posted by tolkien
drivers/char/serial.c에서 pm관련 code...

pm_rs_callback(...) {
int i = 0;

while (i < NR_PORTS) {
struct async_struct * info = rs_table[i].info;
if (req == PM_LAST_SLEEP_CHECK && info ) {
blah... blah...
} else if (req == PM_FIRST_WAKEUP_CHECK && info) {
blah... blah...
} else
return ENOENT;
i++;
}
return 0;
}

이렇게 하니까, 나중에 wakeup한 다음에 pm->state가 PM_FIRST_WAKEUP_CHECK가 아닌
PM_STATE_UNKNOWN으로 나온다. ???
이해를 못함. 그래서 이렇게 바꾸어봤다.

pm_rs_callback(...) {
int i;

if (req == PM_LAST_SLEEP_CHECK) {
for(i=0; i < NR_PORTS; i++) {
struct async_struct * info = rs_table[i].info;
if (info) {
blah... blah...
}
}
} else if (req == PM_FIRST_WAKEUP_CHECK) {
for(i=0; i < NR_PORTS; i++) {
struct async_struct * info = rs_table[i].info;
if (info) {
blah... blah...
}
}
} else {
return ENOENT;
}
return 0;
}

그랬더니 pm->state가 변한다. PM_FIRST_WAKEUP_CHECK로 기억... (아니면 PM_HID_RESUME이었던가... 이런 확인해봐야겠네.)

그 이유가 뭔지 확인해야하겠지?