Setting the realtime priority worked great, and it did mostly solve the issues I was looking to solve. Thanks for the pointers, Mark and Tony.

The button hijacking thing is not doing a thing for me. When I start to block all button input to the player, the following code executes:

int rc,fd;

unsigned long data, buttons[13] = {13,
IR_TOP_BUTTON_PRESSED,
IR_TOP_BUTTON_RELEASED,
IR_RIGHT_BUTTON_PRESSED,
IR_RIGHT_BUTTON_RELEASED,
IR_LEFT_BUTTON_PRESSED,
IR_LEFT_BUTTON_RELEASED,
IR_BOTTOM_BUTTON_PRESSED,
IR_BOTTOM_BUTTON_RELEASED,
IR_KNOB_PRESSED,
IR_KNOB_RELEASED,
IR_KNOB_RIGHT,
IR_KNOB_LEFT};



fd = open("/dev/display",O_RDWR);
if(fd<0)
{ DEBUGF("/dev/display could not be opened!!:");
DEBUGF(sys_errlist[errno]);
}
else
{

rc = ioctl(fd,EMPEG_HIJACK_BINDBUTTONS, buttons);
if(rc<0)
{ DEBUGF("EMPEG_HIJACK_BINDBUTTONS failed!!:");
DEBUGF(sys_errlist[errno]);
}

rc = ioctl(fd,EMPEG_HIJACK_DISPTEXT, "Empeg under control\nof ES&P");
if(rc<0)
{ DEBUGF("EMPEG_HIJACK_DISPTEXT failed!!:");
DEBUGF(sys_errlist[errno]);
}

close(fd);
}

However, when the program is run, I get none of the DEBUGF indicators of failure, plus it is possible to interact with the player using its buttons. The text is not displayed in the screen either.

All I want to do is prevent direct user interaction with the player, by any means other than programatically. Should the procedure work, is it necessary to specify a humongous buttons array (and risk missing custom IR remotes), or can I somehow specify a range of button codes?

Is it necesary to call EMPEG_HIJACK_WAITBUTTONS ? Is it otherwise necessary to create a secondary thread that sits in loop executing EMPEG_HIJACK_WAITBUTTONS?

Again, thanks for all this free tutoring....