static void cksecure(void) { ulong db; extern ulong getdebug(void); if (getscr() & 1) panic("cpu%d: running non-secure", m->machno); db = getdebug(); if (db) iprint("cpu%d: debug enable reg %#lux\n", m->machno, db); }
int main(int argc, char **argv) { int lid = LID_UNKNOWN; int power = PWR_UNKNOWN; int brightscr=1023; //screen brightness on AC (default at start) int brightkeyb=512; //keyboard brightness on AC int dimscr=512; //screen brightness on battery int dimkeyb=300; //keyboard brightness on battery int keyTimer = 0; system("echo -ne \"\\033[9;0]\" >/dev/tty0"); //set screen blank to never -- it doesn't blank the frame buffer so don't use it //intialize the keyboard lights keyb(powerstate() == PWR_AC_CORD?brightkeyb:dimkeyb); keys_timerid = create_timer(KEYS_TIMER, KEYS_TIMEOUT); lcd_timerid = create_timer(LCD_TIMER, LCD_TIMEOUT); power_timerid = create_timer(POWER_TIMER, 0); signal(SIGQUIT, _powerDown); signal(SIGINT, _suspend); signal(SIGUSR1, _newMsg); while(1) { //main loop if( (!power || newMsg) && GetKeyPressed() == 1) //if there is power the timers are not active, so nothing needs to be done { if(!power){ //a key has been pressed -- reset the timers set_timer(keys_timerid, KEYS_TIMEOUT); set_timer(lcd_timerid, LCD_TIMEOUT); screenOn(); } if(newMsg && valkeyb){ //stop flashing the keyboard keyb(valkeyb); toggleLED(0); valkeyb = 0; newMsg = 0; } } if(newMsg){ if(!valkeyb) valkeyb = getkeyb(); toggleLED(flashKeyBrd); if(flashKeyBrd){ keyb(valkeyb); flashKeyBrd=0; } else{ keyb(0); flashKeyBrd=1; } } if(powerDown && !suspend) { set_timer(power_timerid, POWER_TIMEOUT); powerDown = 0; } if(suspend) { set_timer(power_timerid, 0); suspend = 0; powerDown = 0; } if(lid != lidstate()) { lid = lidstate(); lightswitch(lid); } if(power != powerstate()) { //there has been a change in the powerstate keyTimer = 0; power = powerstate(); if (power) { //AC is plugged in // system("echo -ne \"\\033[9;0]\" >/dev/tty0"); //set screen blank to never screenOn(); set_timer(keys_timerid, 0); set_timer(lcd_timerid, 0); dimscr = getscr(); //store current brightness as dim values dimkeyb = getkeyb(); keysOn(); lcdb(brightscr); keyb(brightkeyb); //and brighten lights } else{ //AC is unplugged // system("echo -ne \"\\033[9;1]\" >/dev/tty0"); //set screen blank to 1 minutes set_timer(keys_timerid, KEYS_TIMEOUT); set_timer(lcd_timerid, LCD_TIMEOUT); brightscr = getscr(); //store current brightness as bright brightkeyb = getkeyb(); lcdb(dimscr); keyb(dimkeyb); //and dim lights } } sleep(1); //wait one second } }