From owner-FreeBSD-tech-jp@jp.freebsd.org  Thu Jan 18 14:40:58 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id OAA61307;
	Thu, 18 Jan 2001 14:40:58 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from home.bsdclub.org (home.bsdclub.org [202.227.26.94])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id OAA61298
	for <freebsd-tech-jp@jp.freebsd.org>; Thu, 18 Jan 2001 14:40:56 +0900 (JST)
	(envelope-from aki@DEBUG.gr.jp)
Received: from localhost (localhost.bsdclub.org [127.0.0.1]) by home.bsdclub.org (8.9.3/3.7W) with ESMTP
	id OAA96649; Thu, 18 Jan 2001 14:40:54 +0900 (JST)
To: freebsd-tech-jp@jp.freebsd.org
In-Reply-To: Thu, 18 Jan 2001 14:29:56 +0900
References: <20010118142956C.aki@v.ai.bsdclub.org>
X-Mailer: Mew version 1.94.2 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Organization: Daibou East Bsd User Group
From: Akihiro IIJIMA <aki@DEBUG.gr.jp>
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <20010118144524E.aki@v.ai.bsdclub.org>
Date: Thu, 18 Jan 2001 14:45:24 +0900
X-Dispatcher: imput version 20000228(IM140)
Lines: 146
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+000315
X-Sequence: FreeBSD-tech-jp 3017
Subject: [FreeBSD-tech-jp 3017] Ctrl+alt+DEL and APM
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org
X-Originator: aki@DEBUG.gr.jp

$B$b$H$M$?$O(B 
  From: Akihiro IIJIMA <aki@DEBUG.gr.jp>
  Subject: [FreeBSD-users-jp 58352] Re: Ctrl+alt+DEL and APM
  Date: Thu, 18 Jan 2001 14:29:56 +0900
$B$G$9!#(B

aki> Ctrl+alt+DEL $B$GEE8;$r@Z$j$?$$(B
> > $B!&(Bkbdmap(5) $B$rFI$`$H!$(B
> >      pdwn          Halt the machine and attempt to power it down.
> /usr/share/syscons/keymap/ $B$K$"$k(B us.iso.kbd $B$r(B
> cp us.iso.kbd aki.kbd $B$7$F(B
>  083   del    '.'    '.'    '.'    '.'    '.'    boot   boot    N
> $B$r(B
>  083   del    '.'    '.'    '.'    '.'    '.'    pdwn   pdwn    N
> $B$K=q$-49$($F(B
> /etc/rc.conf $B$K(B
> keymap="aki"
> $B$7$F(B $B:F5/F0$7$?$N$G$9$,!"(B
> Ctrl+alt+DEL $B$7$?$i(B $BEE8;$,@Z$l$:$K(B $B$b$&0lEYN)$A>e$,$C$F$-$^$7$?!#(B
> $B$b$A$m$s<j$G(B shutdown -p $B$r<B9T$9$k$H(B $BEE8;$,@Z$l$^$9!#(B
> OS$B$O(B 4.2-R $B$G$9!#(B

$B$3$l$N;EAH$_$r(B $BDI$$3]$1$F$_$?$$$N$G$9$,!"NO$r$+$7$F$/$@$5$$!#(B

[FreeBSD-users-jp 58346] $B$K$h$k$H(B
--- $B$3$3$+$i(B ---
src/usr.sbin/kbdcontrol/lex.l $B$N(B CVS Revision 1.11.2.1 $B$K(B

MFC: Add the ability to define halt and powerdown keys for sysconf.

(sysconf $B$H$O!)(B syscons $B$N(B typo$B!)(B)$B$H$"$k$N$G!"(Bdiff $B$r8+$F$_$k$H!"(B

@@ -68,6 +68,8 @@ lctrla|ctrla  { return TLCTRA; }
 rctrla         { return TRCTRA; }
 lalta|alta     { return TLALTA; }
 ralta          { return TRALTA; }
+halt           { return THALT; }
+pdwn           { return TPDWN; }
 
 NUL|nul                { number = 0; return TNUM; }
 SOH|soh                { number = 1; return TNUM; }

Ctl+alt+DEL $B$G%j%V!<%H$9$kItJ,$O(B lex.l $B$G$O(B TRBT $B$G!"(B
syscons.c $B$G$O(B RBT $B$J$N$G!"(BHALT/PDWN $B$rC5$7$F(B...

src/sys/dev/syscons/syscons.c $B$O(B 1.336.2.3 $B$G(B

MFC: Add the ability to define halt and powerdown keys for sysconf.

diff $B$r$_$k$H!"(B

@ -3101,7 +3101,19 @@ next_code:
 
            case RBT:
 #ifndef SC_DISABLE_REBOOT
-               shutdown_nice();
+               shutdown_nice(0);
+#endif
+               break;
+
+           case HALT:
+#ifndef SC_DISABLE_REBOOT
+               shutdown_nice(RB_HALT);
+#endif
+               break;
+
+           case PDWN:
+#ifndef SC_DISABLE_REBOOT
+               shutdown_nice(RB_HALT|RB_POWEROFF);
 #endif
                break;

$B$K$J$C$F$$$^$9!#$$$:$l$b(B RELENG_4_2_0_RELEASE $B%?%0$J$N$G!"(B
4.2-RELEASE $B$+$i!";H$($kMM$G$9$M!#(B

--- $B$3$3$^$G(B ---

$B$H$$$&$3$H$J$N$G(B Ctrl+alt+DEL $B$r2!$7$F(B $B$=$l$r(B pdwn $B$H=q$$$F$*$/$H(B
src/sys/dev/syscons/syscons.c $B$N>e5-ItJ,$G(B
shutdown_nice(RB_HALT|RB_POWEROFF) $B$H$$$&4X?t$,<B9T$5$l$k!#(B
$B$3$N%=!<%9(B syscons.c $B$,(B sys/ $B$N2<$K$"$k$N$G(B $B$3$l$O(B kernel$BFb$N4X?t(B
$B$H;W$o$l$k$N$G(B
cd /usr/src/sys $B$7$F(B 
grep shutdown_nice */* $B$7$?$i(B
kern/kern_shutdown.c $B$,8+$D$+$j$^$7$?!#(B
$B!t(B 4.2-R $B$N%=!<%9$G$NOC$G$9!#(B

$B$G(B kern/kern_shutdown.c $B$r8+$k$H(B
shutdown_nice(int howto)
{
        shutdown_howto = howto;
        
        /* Send a signal to init(8) and have it shutdown the world */
        if (initproc != NULL) {
                psignal(initproc, SIGINT);
        } else {
                /* No init(8) running, so simply reboot */
                boot(RB_NOSYNC);
        }
        return;
}

$B$H$J$C$F$$$k$N$G(B howto$B$NCM$K$+$+$o$i$:(B 
                psignal(initproc, SIGINT);
$B$r<B9T$7$F(B $B$=$l$K$h$C$F:F5/F0$7$F$k$@$1$J5$$,$7$^$9!#(B

$B$3$N%U%!%$%k$N(B $B>e$K$O(B

static void poweroff_wait __P((void *, int));
static void shutdown_halt __P((void *junk, int howto));
static void shutdown_panic __P((void *junk, int howto));
static void shutdown_reset __P((void *junk, int howto));

/* register various local shutdown events */
static void 
shutdown_conf(void *unused)
{
  EVENTHANDLER_REGISTER(shutdown_final, poweroff_wait, NULL,
	SHUTDOWN_PRI_FIRST);
  EVENTHANDLER_REGISTER(shutdown_final, shutdown_halt, NULL,
	SHUTDOWN_PRI_LAST + 100);
  EVENTHANDLER_REGISTER(shutdown_final, shutdown_panic, NULL,
	SHUTDOWN_PRI_LAST + 100);
  EVENTHANDLER_REGISTER(shutdown_final, shutdown_reset, NULL,
	SHUTDOWN_PRI_LAST + 200);
}

SYSINIT(shutdown_conf, SI_SUB_INTRINSIC, SI_ORDER_ANY, shutdown_conf, NULL)

$B$H$$$&5-=R$d!"2<$NJ}$G$O(B
static int poweroff_delay = POWEROFF_DELAY;

SYSCTL_INT(_kern_shutdown, OID_AUTO, poweroff_delay, CTLFLAG_RW,
        &poweroff_delay, 0, "");

static void 
poweroff_wait(void *junk, int howto)
{
        if(!(howto & RB_POWEROFF) || poweroff_delay <= 0)
                return;
        DELAY(poweroff_delay * 1000);
}

$B$H$+$$$&5-=R$,$"$k$N$G$9$,!"$3$l$i$O(B $B<B9T$5$l$k$N$G$7$g$&$+!)(B
--
	$BHSEg(B $B><Gn(B (Akihiro Iijima) aki@DEBUG.gr.jp
