Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Vladimir N. Silyaev                  2:5020/400     09 Aug 2000  05:28:23
 To : All
 Subject : Re: APC Back UPS 400
 -------------------------------------------------------------------------------- 
 
 On Tue, 08 Aug 2000 12:46:26 +0400, Konstantin Gusenko wrote:
 
 >>>   Т.е. никак в общем. Если не переписывать init конечно. Ведь он то
 >>>умеет через APM отрубать машину и делает это когда уже можно.
 >> Hу допустим не init этим занимается, а reboot(2). А во вторых ты можешь
 >> подгрузить модуль, который определит свой 'шатдаунер'. Года два назад я так
 >> делал, работало и сейчас работает, если не поломали еще.
 >
 >  А исходного текстика не завалялось?
 
 Исходного текста чего? Если модуля, то сейчас поскребу по сусекам ;-)
 Ок. Hашел. Так как он для 2.2.8, то особого смысла приводить его полностью
 смысла нет.
 -=-=-=-=-=-=-=-=-=-=
 
 #define UPS_PORT        0x2e8
 #define UPS_SHUTDOWN_BIT        0x02
 #define MCR_OFFSET      4
 
 static void power_off(int howto, void *arg){
 int value=inb(UPS_PORT+MCR_OFFSET)|UPS_SHUTDOWN_BIT;
  outb(UPS_PORT+MCR_OFFSET,value);
  printf("Shutdown UPS (%04x->%02x)\n",UPS_PORT,value);
 }
 
 ...
         case LKM_E_LOAD:
                 /*
                  * Don't load twice! (lkmexists() is exported by kern_lkm.c)
                  */
                 if( lkmexists( lkmtp))
                         return( EEXIST);
                 at_shutdown(power_off,NULL,SHUTDOWN_POST_SYNC);
                 /*power_off(0,NULL);*/
                 /* if we make it to here, print copyright on console*/
                 uprintf( "bkpups shutdown module loaded\n");
                 break;          /* Success*/
         case LKM_E_UNLOAD:
                 /* current slot...*/
                 i = args->lkm_offset;
                 rm_at_shutdown(power_off,NULL);
                 break;          /* Success*/
 
 -=-=-=-=-=-=-=-=-=-=-=-
 
 Да, UPS был совсем тупой и имел сигнал на выключение, который был подключен
 к чему-то типа DTR на серйном порту, так что для того, чтобы его погасить
 было достаточно этот пин дернуть, что успешно и делалось. 
 
 -- 
 Vladimir
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: APC Back UPS 400   Vladimir N. Silyaev   09 Aug 2000 05:28:23 
 Re: APC Back UPS 400   Konstantin Gusenko   09 Aug 2000 20:43:32 
Архивное /ru.unix.bsd/166082a77bfb4.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional