Fixed 'bug' in log driver that caused kernel messages not to be displayed.
This was caused by a change in the shared driver code. Not log's fault. Renamed #definitions of driver process numbers, e.g., TTY now is TTY_PROC_NR. All known (special) processes now have consistent naming scheme. Kernel tasks don't follow this scheme.
This commit is contained in:
+1
-1
@@ -90,7 +90,7 @@ PUBLIC int do_diagnostics(message *m)
|
||||
*/
|
||||
if ((proc_nr = m->DIAG_PROC_NR) == SELF)
|
||||
m->DIAG_PROC_NR = proc_nr = m->m_source;
|
||||
result = _sendrec(TTY, m);
|
||||
result = _sendrec(TTY_PROC_NR, m);
|
||||
|
||||
/* Now also make a copy for the private buffer at the LOG server, so
|
||||
* that the messages can be reviewed at a later time.
|
||||
|
||||
+3
-3
@@ -25,9 +25,9 @@ int c;
|
||||
m.DIAG_BUF_COUNT = buf_count;
|
||||
m.DIAG_PRINT_BUF = print_buf;
|
||||
m.DIAG_PROC_NR = SELF;
|
||||
m.m_type = DIAGNOSTICS; /* request TTY to output this buffer */
|
||||
_sendrec(TTY, &m); /* if it fails, we cannot do better */
|
||||
buf_count = 0; /* clear buffer for next batch */
|
||||
m.m_type = DIAGNOSTICS; /* request TTY to output this buffer */
|
||||
_sendrec(TTY_PROC_NR, &m); /* if it fails, we give up */
|
||||
buf_count = 0; /* clear buffer for next batch */
|
||||
}
|
||||
if (c != 0) {
|
||||
print_buf[buf_count++] = c;
|
||||
|
||||
+16
-9
@@ -30,6 +30,7 @@ FORWARD _PROTOTYPE( int log_transfer, (int proc_nr, int opcode, off_t position,
|
||||
FORWARD _PROTOTYPE( int log_do_open, (struct driver *dp, message *m_ptr) );
|
||||
FORWARD _PROTOTYPE( int log_cancel, (struct driver *dp, message *m_ptr) );
|
||||
FORWARD _PROTOTYPE( int log_select, (struct driver *dp, message *m_ptr) );
|
||||
FORWARD _PROTOTYPE( void log_signal, (struct driver *dp, message *m_ptr) );
|
||||
FORWARD _PROTOTYPE( int log_other, (struct driver *dp, message *m_ptr) );
|
||||
FORWARD _PROTOTYPE( void log_geometry, (struct partition *entry) );
|
||||
FORWARD _PROTOTYPE( void log_reply, (int code, int replyee, int proc, int status) );
|
||||
@@ -45,7 +46,7 @@ PRIVATE struct driver log_dtab = {
|
||||
log_transfer, /* do the I/O */
|
||||
nop_cleanup, /* no need to clean up */
|
||||
log_geometry, /* geometry */
|
||||
nop_signal, /* no need to clean up on shutdown */
|
||||
log_signal, /* handle system signal */
|
||||
nop_alarm, /* no alarm */
|
||||
log_cancel, /* CANCEL request */
|
||||
log_select, /* DEV_SELECT request */
|
||||
@@ -403,6 +404,20 @@ PRIVATE void do_status(message *m_ptr)
|
||||
return;
|
||||
}
|
||||
|
||||
/*============================================================================*
|
||||
* log_signal *
|
||||
*============================================================================*/
|
||||
PRIVATE void log_signal(dp, m_ptr)
|
||||
struct driver *dp;
|
||||
message *m_ptr;
|
||||
{
|
||||
sigset_t sigset = m_ptr->NOTIFY_ARG;
|
||||
if (sigismember(&sigset, SIGKMESS)) {
|
||||
do_new_kmess(m_ptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*============================================================================*
|
||||
* log_other *
|
||||
*============================================================================*/
|
||||
@@ -420,14 +435,6 @@ message *m_ptr;
|
||||
r = do_diagnostics(m_ptr);
|
||||
break;
|
||||
}
|
||||
case SYS_SIG: {
|
||||
sigset_t sigset = m_ptr->NOTIFY_ARG;
|
||||
if (sigismember(&sigset, SIGKMESS)) {
|
||||
do_new_kmess(m_ptr);
|
||||
}
|
||||
r = EDONTREPLY;
|
||||
break;
|
||||
}
|
||||
case DEV_STATUS: {
|
||||
do_status(m_ptr);
|
||||
r = EDONTREPLY;
|
||||
|
||||
Reference in New Issue
Block a user