mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
PR modula2/108344 disable default opening of /dev/tty
This patch changes removes the static initialisation code for KeyBoardLEDs.cc. The module is only initialised if one of the exported functions is called. This is useful as the module will access /dev/tty which might not be available. TimerHandler.mod has also been changed to disable the scroll lock LED as a sign of life. gcc/m2/ChangeLog: PR modula2/108344 * gm2-libs-coroutines/TimerHandler.mod (EnableLED): New constant. (Timer): Test EnableLED before switching on the scroll LED. libgm2/ChangeLog: PR modula2/108344 * libm2cor/KeyBoardLEDs.cc (initialize_module): New function. (SwitchScroll): Call initialize_module. (SwitchNum): Call initialize_module. (SwitchCaps): Call initialize_module. (SwitchLEDs): Call initialize_module. (M2EXPORT): Remove initialization code. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
This commit is contained in:
parent
057e537e2a
commit
cf4dcfa672
@ -41,8 +41,9 @@ CONST
|
||||
MaxQuantum = 4 ; (* Maximum ticks a process may consume *)
|
||||
(* before being rescheduled. *)
|
||||
BaseTicks = 1000000 ; (* Max resolution of clock ticks per sec *)
|
||||
TimerStackSize = 100000H ; (* Reasonable sized stack for a process *)
|
||||
Debugging = FALSE ; (* Do you want lots of debugging info? *)
|
||||
TimerStackSize = 100000H ; (* Reasonable sized stack for a process *)
|
||||
Debugging = FALSE ; (* Do you want lots of debugging info? *)
|
||||
EnableLED = FALSE ; (* Should the scroll LED be pulsed? *)
|
||||
|
||||
TYPE
|
||||
EVENT = POINTER TO RECORD
|
||||
@ -328,21 +329,23 @@ BEGIN
|
||||
(* Now compenstate for lost ticks *)
|
||||
StartClock (TimerIntNo, CurrentCount + (BaseTicks DIV TicksPerSecond)) ;
|
||||
|
||||
(* your code needs to go here *)
|
||||
INC (TotalTicks) ; (* (iii) *) (* remove for student *)
|
||||
(* now pulse scroll LED *) (* remove for student *)
|
||||
IF (TotalTicks MOD TicksPerSecond) = 0 (* remove for student *)
|
||||
THEN (* remove for student *)
|
||||
ScrollLED := NOT ScrollLED ; (* remove for student *)
|
||||
(* r := printf("<scroll %d>", TotalTicks); *)
|
||||
SwitchScroll(ScrollLED) (* (iv) *) (* remove for student *)
|
||||
END ; (* remove for student *)
|
||||
IF (TotalTicks MOD MaxQuantum) = 0 (* remove for student *)
|
||||
THEN (* remove for student *)
|
||||
RotateRunQueue (* (ii) *) (* remove for student *)
|
||||
END ; (* remove for student *)
|
||||
INC (TotalTicks) ; (* (iii) *)
|
||||
IF EnableLED
|
||||
THEN
|
||||
(* now pulse scroll LED *)
|
||||
IF (TotalTicks MOD TicksPerSecond) = 0
|
||||
THEN
|
||||
ScrollLED := NOT ScrollLED ;
|
||||
(* r := printf("<scroll %d>", TotalTicks); *)
|
||||
SwitchScroll(ScrollLED) (* (iv) *)
|
||||
END
|
||||
END ;
|
||||
IF (TotalTicks MOD MaxQuantum) = 0
|
||||
THEN
|
||||
RotateRunQueue (* (ii) *)
|
||||
END ;
|
||||
|
||||
CheckActiveQueue (* (i) *) (* remove for student *)
|
||||
CheckActiveQueue (* (i) *)
|
||||
END
|
||||
END Timer ;
|
||||
|
||||
|
@ -46,10 +46,27 @@ static int fd;
|
||||
static bool initialized = false;
|
||||
|
||||
|
||||
void
|
||||
initialize_module (void)
|
||||
{
|
||||
if (! initialized)
|
||||
{
|
||||
initialized = true;
|
||||
fd = open ("/dev/tty", O_RDONLY);
|
||||
if (fd == -1)
|
||||
{
|
||||
perror ("unable to open /dev/tty");
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void
|
||||
EXPORT(SwitchScroll) (int scrolllock)
|
||||
{
|
||||
unsigned char leds;
|
||||
|
||||
initialize_module ();
|
||||
int r = ioctl (fd, KDGETLED, &leds);
|
||||
if (scrolllock)
|
||||
leds = leds | LED_SCR;
|
||||
@ -62,6 +79,8 @@ extern "C" void
|
||||
EXPORT(SwitchNum) (int numlock)
|
||||
{
|
||||
unsigned char leds;
|
||||
|
||||
initialize_module ();
|
||||
int r = ioctl (fd, KDGETLED, &leds);
|
||||
if (numlock)
|
||||
leds = leds | LED_NUM;
|
||||
@ -74,6 +93,8 @@ extern "C" void
|
||||
EXPORT(SwitchCaps) (int capslock)
|
||||
{
|
||||
unsigned char leds;
|
||||
|
||||
initialize_module ();
|
||||
int r = ioctl (fd, KDGETLED, &leds);
|
||||
if (capslock)
|
||||
leds = leds | LED_CAP;
|
||||
@ -93,16 +114,6 @@ EXPORT(SwitchLeds) (int numlock, int capslock, int scrolllock)
|
||||
extern "C" void
|
||||
M2EXPORT(init) (int, char **, char **)
|
||||
{
|
||||
if (! initialized)
|
||||
{
|
||||
initialized = true;
|
||||
fd = open ("/dev/tty", O_RDONLY);
|
||||
if (fd == -1)
|
||||
{
|
||||
perror ("unable to open /dev/tty");
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user