Changing the message union to anonymous.

This allows us to write things like this:
  message m;
  m.m_notify.interrupts = new_value;

or
  message *mp;
  mp->m_notify.interrupts = new_value;

The shorthands macro have been adapted for the new scheme, and will be
kept as long as we have generic messages being used.

Change-Id: Icfd02b5f126892b1d5d2cebe8c8fb02b180000f7
This commit is contained in:
Lionel Sambuc 2013-11-28 18:17:38 +01:00
parent 4a0199d66d
commit 175d3e7eae
28 changed files with 193 additions and 197 deletions

View file

@ -1598,7 +1598,7 @@ static void w_intr_wait(void)
if (r != 0) if (r != 0)
panic("sys_inb failed: %d", r); panic("sys_inb failed: %d", r);
w_wn->w_status= w_status; w_wn->w_status= w_status;
w_hw_int(m.NOTIFY_INTMASK); w_hw_int(m.m_notify.interrupts);
break; break;
default: default:
/* /*

View file

@ -583,7 +583,7 @@ static int flt_receive(message *mess, int which)
} }
if(mess->m_source == CLOCK && is_ipc_notify(ipc_status)) { if(mess->m_source == CLOCK && is_ipc_notify(ipc_status)) {
if (mess->NOTIFY_TIMESTAMP < flt_alarm((clock_t) -1)) { if (mess->m_notify.timestamp < flt_alarm((clock_t) -1)) {
#if DEBUG #if DEBUG
printf("Filter: SKIPPING old alarm " printf("Filter: SKIPPING old alarm "
"notification\n"); "notification\n");

View file

@ -769,7 +769,7 @@ static void start_motor(void)
if (is_ipc_notify(ipc_status)) { if (is_ipc_notify(ipc_status)) {
switch (_ENDPOINT_P(mess.m_source)) { switch (_ENDPOINT_P(mess.m_source)) {
case CLOCK: case CLOCK:
f_expire_tmrs(mess.NOTIFY_TIMESTAMP); f_expire_tmrs(mess.m_notify.timestamp);
break; break;
default : default :
f_busy = BSY_IDLE; f_busy = BSY_IDLE;
@ -845,7 +845,7 @@ static int seek(void)
if (is_ipc_notify(ipc_status)) { if (is_ipc_notify(ipc_status)) {
switch (_ENDPOINT_P(mess.m_source)) { switch (_ENDPOINT_P(mess.m_source)) {
case CLOCK: case CLOCK:
f_expire_tmrs(mess.NOTIFY_TIMESTAMP); f_expire_tmrs(mess.m_notify.timestamp);
break; break;
default : default :
f_busy = BSY_IDLE; f_busy = BSY_IDLE;
@ -1123,7 +1123,7 @@ static void f_reset(void)
if (is_ipc_notify(ipc_status)) { if (is_ipc_notify(ipc_status)) {
switch (_ENDPOINT_P(mess.m_source)) { switch (_ENDPOINT_P(mess.m_source)) {
case CLOCK: case CLOCK:
f_expire_tmrs(mess.NOTIFY_TIMESTAMP); f_expire_tmrs(mess.m_notify.timestamp);
break; break;
default : default :
f_busy = BSY_IDLE; f_busy = BSY_IDLE;
@ -1174,7 +1174,7 @@ static int f_intr_wait(void)
if (is_ipc_notify(ipc_status)) { if (is_ipc_notify(ipc_status)) {
switch (_ENDPOINT_P(mess.m_source)) { switch (_ENDPOINT_P(mess.m_source)) {
case CLOCK: case CLOCK:
f_expire_tmrs(mess.NOTIFY_TIMESTAMP); f_expire_tmrs(mess.m_notify.timestamp);
break; break;
default : default :
f_busy = BSY_IDLE; f_busy = BSY_IDLE;

View file

@ -237,7 +237,7 @@ int main(int argc, char *argv[])
handle_hw_intr(); handle_hw_intr();
break; break;
case CLOCK: case CLOCK:
expire_timers(m.NOTIFY_TIMESTAMP); expire_timers(m.m_notify.timestamp);
break; break;
default: default:
panic(" illegal notify from: %d", m.m_source); panic(" illegal notify from: %d", m.m_source);

View file

@ -226,11 +226,11 @@ message *m;
} }
/* Re-enable Rx interrupt. */ /* Re-enable Rx interrupt. */
if(m->NOTIFY_INTMASK & (1 << RX_INT)) if(m->m_notify.interrupts & (1 << RX_INT))
lan8710a_enable_interrupt(RX_INT); lan8710a_enable_interrupt(RX_INT);
/* Re-enable Tx interrupt. */ /* Re-enable Tx interrupt. */
if(m->NOTIFY_INTMASK & (1 << TX_INT)) if(m->m_notify.interrupts & (1 << TX_INT))
lan8710a_enable_interrupt(TX_INT); lan8710a_enable_interrupt(TX_INT);
} }

View file

@ -589,7 +589,7 @@ rs_interrupt(message *m)
int line; int line;
rs232_t *rs; rs232_t *rs;
irq_set = m->NOTIFY_INTMASK; irq_set = m->m_notify.interrupts;
for (line = 0, rs = rs_lines; line < NR_RS_LINES; line++, rs++) { for (line = 0, rs = rs_lines; line < NR_RS_LINES; line++, rs++) {
if (irq_set & (1 << rs->irq_hook_id)) { if (irq_set & (1 << rs->irq_hook_id)) {
rs232_handler(rs); rs232_handler(rs);

View file

@ -534,7 +534,7 @@ void rs_interrupt(message *m)
int i; int i;
rs232_t *rs; rs232_t *rs;
irq_set= m->NOTIFY_INTMASK; irq_set= m->m_notify.interrupts;
for (i= 0, rs = rs_lines; i<NR_RS_LINES; i++, rs++) for (i= 0, rs = rs_lines; i<NR_RS_LINES; i++, rs++)
{ {
if (irq_set & (1 << rs->irq)) if (irq_set & (1 << rs->irq))

View file

@ -186,18 +186,18 @@ int main(void)
switch (_ENDPOINT_P(tty_mess.m_source)) { switch (_ENDPOINT_P(tty_mess.m_source)) {
case CLOCK: case CLOCK:
/* run watchdogs of expired timers */ /* run watchdogs of expired timers */
expire_timers(tty_mess.NOTIFY_TIMESTAMP); expire_timers(tty_mess.m_notify.timestamp);
break; break;
case HARDWARE: case HARDWARE:
/* hardware interrupt notification */ /* hardware interrupt notification */
#if NR_RS_LINES > 0 #if NR_RS_LINES > 0
/* serial I/O */ /* serial I/O */
if (tty_mess.NOTIFY_INTMASK & rs_irq_set) if (tty_mess.m_notify.interrupts & rs_irq_set)
rs_interrupt(&tty_mess); rs_interrupt(&tty_mess);
#endif #endif
/* run watchdogs of expired timers */ /* run watchdogs of expired timers */
expire_timers(tty_mess.NOTIFY_TIMESTAMP); expire_timers(tty_mess.m_notify.timestamp);
break; break;
default: default:
/* do nothing */ /* do nothing */

View file

@ -107,11 +107,6 @@
#define is_ipc_asynch(ipc_status) \ #define is_ipc_asynch(ipc_status) \
(is_ipc_notify(ipc_status) || IPC_STATUS_CALL(ipc_status) == SENDA) (is_ipc_notify(ipc_status) || IPC_STATUS_CALL(ipc_status) == SENDA)
/* Shorthands for message parameters passed with notifications. */
#define NOTIFY_TIMESTAMP m_u.m_notify.timestamp
#define NOTIFY_INTMASK m_u.m_notify.interrupts
#define NOTIFY_SIGSET m_u.m_notify.sigset
/*===========================================================================* /*===========================================================================*
* Messages for BUS controller drivers * * Messages for BUS controller drivers *
*===========================================================================*/ *===========================================================================*/
@ -476,12 +471,12 @@
#define SG_SIZE m2_i2 /* no. of entries */ #define SG_SIZE m2_i2 /* no. of entries */
/* Field names for SYS_GETKSIG, _ENDKSIG, _KILL, _SIGSEND, _SIGRETURN. */ /* Field names for SYS_GETKSIG, _ENDKSIG, _KILL, _SIGSEND, _SIGRETURN. */
#define SYS_SIG_ENDPT m_u.m_sigcalls.ep /* process number for inform */ #define SYS_SIG_ENDPT m_sigcalls.ep /* process number for inform */
#define SYS_SIG_NUMBER m_u.m_sigcalls.sig /* signal number to send */ #define SYS_SIG_NUMBER m_sigcalls.sig /* signal number to send */
#define SYS_SIG_FLAGS m_u.m_sigcalls.flags /* signal flags field */ #define SYS_SIG_FLAGS m_sigcalls.flags /* signal flags field */
#define SYS_SIG_MAP m_u.m_sigcalls.sigs /* used to pass signal bit map */ #define SYS_SIG_MAP m_sigcalls.sigs /* used to pass signal bit map */
#define SYS_SIG_CTXT_PTR m_u.m_sigcalls.sigctx /* pointer to signal context */ #define SYS_SIG_CTXT_PTR m_sigcalls.sigctx /* pointer to signal context */
#define SYS_SIG_HOW m_u.m_sigcalls.how /* used to pass signal bit map */ #define SYS_SIG_HOW m_sigcalls.how /* used to pass signal bit map */
/* Field names for SYS_FORK, _EXEC, _EXIT, GETMCONTEXT, SETMCONTEXT.*/ /* Field names for SYS_FORK, _EXEC, _EXIT, GETMCONTEXT, SETMCONTEXT.*/
#define PR_ENDPT m1_i1 /* indicates a process */ #define PR_ENDPT m1_i1 /* indicates a process */
@ -823,18 +818,18 @@
/* General calls. */ /* General calls. */
#define VM_MMAP (VM_RQ_BASE+10) #define VM_MMAP (VM_RQ_BASE+10)
# define VMM_ADDR m_u.m_mmap.addr # define VMM_ADDR m_mmap.addr
# define VMM_LEN m_u.m_mmap.len # define VMM_LEN m_mmap.len
# define VMM_PROT m_u.m_mmap.prot # define VMM_PROT m_mmap.prot
# define VMM_FLAGS m_u.m_mmap.flags # define VMM_FLAGS m_mmap.flags
# define VMM_FD m_u.m_mmap.fd # define VMM_FD m_mmap.fd
# define VMM_OFFSET m_u.m_mmap.offset # define VMM_OFFSET m_mmap.offset
# define VMM_FORWHOM m_u.m_mmap.forwhom # define VMM_FORWHOM m_mmap.forwhom
# define VMM_RETADDR m_u.m_mmap.retaddr # define VMM_RETADDR m_mmap.retaddr
#define VM_MUNMAP (VM_RQ_BASE+17) #define VM_MUNMAP (VM_RQ_BASE+17)
# define VMUM_ADDR m_u.m_mmap.addr # define VMUM_ADDR m_mmap.addr
# define VMUM_LEN m_u.m_mmap.len # define VMUM_LEN m_mmap.len
/* to VM: inform VM about a region of memory that is used for /* to VM: inform VM about a region of memory that is used for
* bus-master DMA * bus-master DMA
@ -913,8 +908,8 @@
# define VMRE_FLAGS m1_i3 # define VMRE_FLAGS m1_i3
#define VM_SHM_UNMAP (VM_RQ_BASE+34) #define VM_SHM_UNMAP (VM_RQ_BASE+34)
# define VMUN_ENDPT m_u.m_mmap.forwhom # define VMUN_ENDPT m_mmap.forwhom
# define VMUN_ADDR m_u.m_mmap.addr # define VMUN_ADDR m_mmap.addr
#define VM_GETPHYS (VM_RQ_BASE+35) #define VM_GETPHYS (VM_RQ_BASE+35)
# define VMPHYS_ENDPT m2_i1 # define VMPHYS_ENDPT m2_i1

View file

@ -114,19 +114,6 @@ typedef struct {
} mess_11; } mess_11;
_ASSERT_MSG_SIZE(mess_11); _ASSERT_MSG_SIZE(mess_11);
typedef struct {
dev_t dev; /* 64bits long. */
off_t dev_offset;
off_t ino_offset;
ino_t ino;
u32_t *flags_ptr;
void *block;
u8_t pages;
u8_t flags;
uint8_t padding[12];
} mess_vmmcp;
_ASSERT_MSG_SIZE(mess_vmmcp);
typedef struct { typedef struct {
u64_t timestamp; /* valid for every notify msg */ u64_t timestamp; /* valid for every notify msg */
u64_t interrupts; /* raised interrupts; valid if from HARDWARE */ u64_t interrupts; /* raised interrupts; valid if from HARDWARE */
@ -162,6 +149,19 @@ typedef struct {
} mess_vm_vfs_mmap; } mess_vm_vfs_mmap;
_ASSERT_MSG_SIZE(mess_vm_vfs_mmap); _ASSERT_MSG_SIZE(mess_vm_vfs_mmap);
typedef struct {
dev_t dev; /* 64bits long. */
off_t dev_offset;
off_t ino_offset;
ino_t ino;
void *block;
u32_t *flags_ptr;
u8_t pages;
u8_t flags;
uint8_t padding[12];
} mess_vmmcp;
_ASSERT_MSG_SIZE(mess_vmmcp);
typedef struct { typedef struct {
void *addr; void *addr;
u8_t flags; u8_t flags;
@ -184,114 +184,114 @@ typedef struct {
mess_9 m_m9; mess_9 m_m9;
mess_10 m_m10; mess_10 m_m10;
mess_11 m_m11; mess_11 m_m11;
mess_mmap m_mmap;
mess_vmmcp m_vmmcp; mess_vmmcp m_vmmcp;
mess_vmmcp_reply m_vmmcp_reply; mess_vmmcp_reply m_vmmcp_reply;
mess_mmap m_mmap;
mess_vm_vfs_mmap m_vm_vfs; mess_vm_vfs_mmap m_vm_vfs;
mess_notify m_notify; /* notify messages */ mess_notify m_notify; /* notify messages */
mess_sigcalls m_sigcalls; /* SYS_{GETKSIG,ENDKSIG,KILL,SIGSEND,SIGRETURN} */ mess_sigcalls m_sigcalls; /* SYS_{GETKSIG,ENDKSIG,KILL,SIGSEND,SIGRETURN} */
u32_t size[14]; /* message payload may have 14 longs at most */ u8_t size[56]; /* message payload may have 56 bytes at most */
} m_u; };
} message __aligned(16); } message __aligned(16);
/* Ensure the complete union respects the IPC assumptions. */ /* Ensure the complete union respects the IPC assumptions. */
typedef int _ASSERT_message[/* CONSTCOND */sizeof(message) == 64 ?1 : -1]; typedef int _ASSERT_message[/* CONSTCOND */sizeof(message) == 64 ? 1 : -1];
/* The following defines provide names for useful members. */ /* The following defines provide names for useful members. */
#define m1_i1 m_u.m_m1.m1i1 #define m1_i1 m_m1.m1i1
#define m1_i2 m_u.m_m1.m1i2 #define m1_i2 m_m1.m1i2
#define m1_i3 m_u.m_m1.m1i3 #define m1_i3 m_m1.m1i3
#define m1_p1 m_u.m_m1.m1p1 #define m1_p1 m_m1.m1p1
#define m1_p2 m_u.m_m1.m1p2 #define m1_p2 m_m1.m1p2
#define m1_p3 m_u.m_m1.m1p3 #define m1_p3 m_m1.m1p3
#define m1_p4 m_u.m_m1.m1p4 #define m1_p4 m_m1.m1p4
#define m1_ull1 m_u.m_m1.m1ull1 #define m1_ull1 m_m1.m1ull1
#define m2_ll1 m_u.m_m2.m2ll1 #define m2_ll1 m_m2.m2ll1
#define m2_i1 m_u.m_m2.m2i1 #define m2_i1 m_m2.m2i1
#define m2_i2 m_u.m_m2.m2i2 #define m2_i2 m_m2.m2i2
#define m2_i3 m_u.m_m2.m2i3 #define m2_i3 m_m2.m2i3
#define m2_l1 m_u.m_m2.m2l1 #define m2_l1 m_m2.m2l1
#define m2_l2 m_u.m_m2.m2l2 #define m2_l2 m_m2.m2l2
#define m2_p1 m_u.m_m2.m2p1 #define m2_p1 m_m2.m2p1
#define m2_sigset m_u.m_m2.sigset #define m2_sigset m_m2.sigset
#define m2_s1 m_u.m_m2.m2s1 #define m2_s1 m_m2.m2s1
#define m3_i1 m_u.m_m3.m3i1 #define m3_i1 m_m3.m3i1
#define m3_i2 m_u.m_m3.m3i2 #define m3_i2 m_m3.m3i2
#define m3_p1 m_u.m_m3.m3p1 #define m3_p1 m_m3.m3p1
#define m3_ca1 m_u.m_m3.m3ca1 #define m3_ca1 m_m3.m3ca1
#define m4_ll1 m_u.m_m4.m4ll1 #define m4_ll1 m_m4.m4ll1
#define m4_l1 m_u.m_m4.m4l1 #define m4_l1 m_m4.m4l1
#define m4_l2 m_u.m_m4.m4l2 #define m4_l2 m_m4.m4l2
#define m4_l3 m_u.m_m4.m4l3 #define m4_l3 m_m4.m4l3
#define m4_l4 m_u.m_m4.m4l4 #define m4_l4 m_m4.m4l4
#define m4_l5 m_u.m_m4.m4l5 #define m4_l5 m_m4.m4l5
#define m5_s1 m_u.m_m5.m5s1 #define m5_s1 m_m5.m5s1
#define m5_s2 m_u.m_m5.m5s2 #define m5_s2 m_m5.m5s2
#define m5_i1 m_u.m_m5.m5i1 #define m5_i1 m_m5.m5i1
#define m5_i2 m_u.m_m5.m5i2 #define m5_i2 m_m5.m5i2
#define m5_l1 m_u.m_m5.m5l1 #define m5_l1 m_m5.m5l1
#define m5_l2 m_u.m_m5.m5l2 #define m5_l2 m_m5.m5l2
#define m5_l3 m_u.m_m5.m5l3 #define m5_l3 m_m5.m5l3
#define m6_l1 m_u.m_m6.m6l1 #define m6_l1 m_m6.m6l1
#define m6_l2 m_u.m_m6.m6l2 #define m6_l2 m_m6.m6l2
#define m6_l3 m_u.m_m6.m6l3 #define m6_l3 m_m6.m6l3
#define m6_s1 m_u.m_m6.m6s1 #define m6_s1 m_m6.m6s1
#define m6_s2 m_u.m_m6.m6s2 #define m6_s2 m_m6.m6s2
#define m6_s3 m_u.m_m6.m6s3 #define m6_s3 m_m6.m6s3
#define m6_c1 m_u.m_m6.m6c1 #define m6_c1 m_m6.m6c1
#define m6_c2 m_u.m_m6.m6c2 #define m6_c2 m_m6.m6c2
#define m6_p1 m_u.m_m6.m6p1 #define m6_p1 m_m6.m6p1
#define m6_p2 m_u.m_m6.m6p2 #define m6_p2 m_m6.m6p2
#define m7_i1 m_u.m_m7.m7i1 #define m7_i1 m_m7.m7i1
#define m7_i2 m_u.m_m7.m7i2 #define m7_i2 m_m7.m7i2
#define m7_i3 m_u.m_m7.m7i3 #define m7_i3 m_m7.m7i3
#define m7_i4 m_u.m_m7.m7i4 #define m7_i4 m_m7.m7i4
#define m7_i5 m_u.m_m7.m7i5 #define m7_i5 m_m7.m7i5
#define m7_p1 m_u.m_m7.m7p1 #define m7_p1 m_m7.m7p1
#define m7_p2 m_u.m_m7.m7p2 #define m7_p2 m_m7.m7p2
#define m8_i1 m_u.m_m8.m8i1 #define m8_i1 m_m8.m8i1
#define m8_i2 m_u.m_m8.m8i2 #define m8_i2 m_m8.m8i2
#define m8_p1 m_u.m_m8.m8p1 #define m8_p1 m_m8.m8p1
#define m8_p2 m_u.m_m8.m8p2 #define m8_p2 m_m8.m8p2
#define m8_p3 m_u.m_m8.m8p3 #define m8_p3 m_m8.m8p3
#define m8_p4 m_u.m_m8.m8p4 #define m8_p4 m_m8.m8p4
#define m9_l1 m_u.m_m9.m9l1 #define m9_l1 m_m9.m9l1
#define m9_l2 m_u.m_m9.m9l2 #define m9_l2 m_m9.m9l2
#define m9_l3 m_u.m_m9.m9l3 #define m9_l3 m_m9.m9l3
#define m9_l4 m_u.m_m9.m9l4 #define m9_l4 m_m9.m9l4
#define m9_l5 m_u.m_m9.m9l5 #define m9_l5 m_m9.m9l5
#define m9_s1 m_u.m_m9.m9s1 #define m9_s1 m_m9.m9s1
#define m9_s2 m_u.m_m9.m9s2 #define m9_s2 m_m9.m9s2
#define m9_s3 m_u.m_m9.m9s3 #define m9_s3 m_m9.m9s3
#define m9_s4 m_u.m_m9.m9s4 #define m9_s4 m_m9.m9s4
#define m9_ull1 m_u.m_m9.m9ull1 #define m9_ull1 m_m9.m9ull1
#define m10_i1 m_u.m_m10.m10i1 #define m10_i1 m_m10.m10i1
#define m10_i2 m_u.m_m10.m10i2 #define m10_i2 m_m10.m10i2
#define m10_i3 m_u.m_m10.m10i3 #define m10_i3 m_m10.m10i3
#define m10_i4 m_u.m_m10.m10i4 #define m10_i4 m_m10.m10i4
#define m10_l1 m_u.m_m10.m10l1 #define m10_l1 m_m10.m10l1
#define m10_l2 m_u.m_m10.m10l2 #define m10_l2 m_m10.m10l2
#define m10_l3 m_u.m_m10.m10l3 #define m10_l3 m_m10.m10l3
#define m11_i1 m_u.m_m11.m11i1 #define m11_i1 m_m11.m11i1
#define m11_s1 m_u.m_m11.m11s1 #define m11_s1 m_m11.m11s1
#define m11_s2 m_u.m_m11.m11s2 #define m11_s2 m_m11.m11s2
#define m11_s3 m_u.m_m11.m11s3 #define m11_s3 m_m11.m11s3
#define m11_s4 m_u.m_m11.m11s4 #define m11_s4 m_m11.m11s4
#define m11_p1 m_u.m_m11.m11p1 #define m11_p1 m_m11.m11p1
#define m11_p2 m_u.m_m11.m11p2 #define m11_p2 m_m11.m11p2
#define m11_p3 m_u.m_m11.m11p3 #define m11_p3 m_m11.m11p3
#define m11_p4 m_u.m_m11.m11p4 #define m11_p4 m_m11.m11p4
/*==========================================================================* /*==========================================================================*
* Minix run-time system (IPC). * * Minix run-time system (IPC). *

View file

@ -101,14 +101,15 @@ static void set_idle_name(char * name, int n)
#define BuildNotifyMessage(m_ptr, src, dst_ptr) \ #define BuildNotifyMessage(m_ptr, src, dst_ptr) \
memset((m_ptr), 0, sizeof(*(m_ptr))); \ memset((m_ptr), 0, sizeof(*(m_ptr))); \
(m_ptr)->m_type = NOTIFY_MESSAGE; \ (m_ptr)->m_type = NOTIFY_MESSAGE; \
(m_ptr)->NOTIFY_TIMESTAMP = get_monotonic(); \ (m_ptr)->m_notify.timestamp = get_monotonic(); \
switch (src) { \ switch (src) { \
case HARDWARE: \ case HARDWARE: \
(m_ptr)->NOTIFY_INTMASK = priv(dst_ptr)->s_int_pending; \ (m_ptr)->m_notify.interrupts = \
priv(dst_ptr)->s_int_pending; \
priv(dst_ptr)->s_int_pending = 0; \ priv(dst_ptr)->s_int_pending = 0; \
break; \ break; \
case SYSTEM: \ case SYSTEM: \
memcpy(&(m_ptr)->NOTIFY_SIGSET, \ memcpy(&(m_ptr)->m_notify.sigset, \
&priv(dst_ptr)->s_sig_pending, \ &priv(dst_ptr)->s_sig_pending, \
sizeof(sigset_t)); \ sizeof(sigset_t)); \
sigemptyset(&priv(dst_ptr)->s_sig_pending); \ sigemptyset(&priv(dst_ptr)->s_sig_pending); \

View file

@ -392,12 +392,12 @@ void blockdriver_process_on_thread(struct blockdriver *bdp, message *m_ptr,
switch (_ENDPOINT_P(m_ptr->m_source)) { switch (_ENDPOINT_P(m_ptr->m_source)) {
case HARDWARE: case HARDWARE:
if (bdp->bdr_intr) if (bdp->bdr_intr)
(*bdp->bdr_intr)(m_ptr->NOTIFY_INTMASK); (*bdp->bdr_intr)(m_ptr->m_notify.interrupts);
break; break;
case CLOCK: case CLOCK:
if (bdp->bdr_alarm) if (bdp->bdr_alarm)
(*bdp->bdr_alarm)(m_ptr->NOTIFY_TIMESTAMP); (*bdp->bdr_alarm)(m_ptr->m_notify.timestamp);
break; break;
default: default:

View file

@ -58,15 +58,15 @@ int minix_vfs_mmap(endpoint_t who, off_t offset, size_t len,
memset(&m, 0, sizeof(message)); memset(&m, 0, sizeof(message));
m.m_u.m_vm_vfs.who = who; m.m_vm_vfs.who = who;
m.m_u.m_vm_vfs.offset = offset; m.m_vm_vfs.offset = offset;
m.m_u.m_vm_vfs.dev = dev; m.m_vm_vfs.dev = dev;
m.m_u.m_vm_vfs.ino = ino; m.m_vm_vfs.ino = ino;
m.m_u.m_vm_vfs.vaddr = vaddr; m.m_vm_vfs.vaddr = vaddr;
m.m_u.m_vm_vfs.len = len; m.m_vm_vfs.len = len;
m.m_u.m_vm_vfs.fd = fd; m.m_vm_vfs.fd = fd;
m.m_u.m_vm_vfs.clearend = clearend; m.m_vm_vfs.clearend = clearend;
m.m_u.m_vm_vfs.flags = flags; m.m_vm_vfs.flags = flags;
return _syscall(VM_PROC_NR, VM_VFS_MMAP, &m); return _syscall(VM_PROC_NR, VM_VFS_MMAP, &m);
} }

View file

@ -447,12 +447,12 @@ void chardriver_process(struct chardriver *cdp, message *m_ptr, int ipc_status)
switch (_ENDPOINT_P(m_ptr->m_source)) { switch (_ENDPOINT_P(m_ptr->m_source)) {
case HARDWARE: case HARDWARE:
if (cdp->cdr_intr) if (cdp->cdr_intr)
cdp->cdr_intr(m_ptr->NOTIFY_INTMASK); cdp->cdr_intr(m_ptr->m_notify.interrupts);
break; break;
case CLOCK: case CLOCK:
if (cdp->cdr_alarm) if (cdp->cdr_alarm)
cdp->cdr_alarm(m_ptr->NOTIFY_TIMESTAMP); cdp->cdr_alarm(m_ptr->m_notify.timestamp);
break; break;
default: default:

View file

@ -64,7 +64,7 @@ static void dispatcher_thread(void *unused) {
case HARDWARE: case HARDWARE:
for (i =0 ; i < 32 ; i++) for (i =0 ; i < 32 ; i++)
{ {
if(m.NOTIFY_INTMASK & (1 << i)) if(m.m_notify.interrupts & (1 << i))
{ {
_ddekit_interrupt_trigger(i); _ddekit_interrupt_trigger(i);
} }

View file

@ -349,8 +349,8 @@ omap_message_hook(message * m)
switch (_ENDPOINT_P(m->m_source)) { switch (_ENDPOINT_P(m->m_source)) {
case HARDWARE: case HARDWARE:
/* Hardware interrupt return a "set" if pending interrupts */ /* Hardware interrupt return a "set" if pending interrupts */
irq_set = m->NOTIFY_INTMASK; irq_set = m->m_notify.interrupts;
log_debug(&log, "HW message 0X%08llx\n", m->NOTIFY_INTMASK); log_debug(&log, "HW message 0X%08llx\n", m->m_notify.interrupts);
bank = &omap_gpio_banks[0]; bank = &omap_gpio_banks[0];
for (i = 0; omap_gpio_banks[i].name != NULL; i++) { for (i = 0; omap_gpio_banks[i].name != NULL; i++) {
bank = &omap_gpio_banks[i]; bank = &omap_gpio_banks[i];

View file

@ -146,12 +146,12 @@ inputdriver_process(struct inputdriver *idp, message *m_ptr, int ipc_status)
switch (_ENDPOINT_P(m_ptr->m_source)) { switch (_ENDPOINT_P(m_ptr->m_source)) {
case HARDWARE: case HARDWARE:
if (idp->idr_intr) if (idp->idr_intr)
idp->idr_intr(m_ptr->NOTIFY_INTMASK); idp->idr_intr(m_ptr->m_notify.interrupts);
break; break;
case CLOCK: case CLOCK:
if (idp->idr_alarm) if (idp->idr_alarm)
idp->idr_alarm(m_ptr->NOTIFY_TIMESTAMP); idp->idr_alarm(m_ptr->m_notify.timestamp);
break; break;
default: default:

View file

@ -93,7 +93,7 @@ int do_sef_signal_request(message *m_ptr)
if(m_ptr->m_source == SYSTEM) { if(m_ptr->m_source == SYSTEM) {
/* Handle kernel signals. */ /* Handle kernel signals. */
sigset = m_ptr->NOTIFY_SIGSET; sigset = m_ptr->m_notify.sigset;
for (signo = SIGK_FIRST; signo <= SIGK_LAST; signo++) { for (signo = SIGK_FIRST; signo <= SIGK_LAST; signo++) {
int s = sigismember(&sigset, signo); int s = sigismember(&sigset, signo);
assert(s >= 0); assert(s >= 0);

View file

@ -28,14 +28,14 @@ int vm_cachecall(message *m, int call, void *addr, dev_t dev, off_t dev_offset,
assert(dev != NO_DEV); assert(dev != NO_DEV);
m->m_u.m_vmmcp.dev_offset = dev_offset; m->m_vmmcp.dev_offset = dev_offset;
m->m_u.m_vmmcp.ino_offset = ino_offset; m->m_vmmcp.ino_offset = ino_offset;
m->m_u.m_vmmcp.ino = ino; m->m_vmmcp.ino = ino;
m->m_u.m_vmmcp.block = addr; m->m_vmmcp.block = addr;
m->m_u.m_vmmcp.flags_ptr = flags; m->m_vmmcp.flags_ptr = flags;
m->m_u.m_vmmcp.dev = dev; m->m_vmmcp.dev = dev;
m->m_u.m_vmmcp.pages = blocksize / PAGE_SIZE; m->m_vmmcp.pages = blocksize / PAGE_SIZE;
m->m_u.m_vmmcp.flags = 0; m->m_vmmcp.flags = 0;
return _taskcall(VM_PROC_NR, call, m); return _taskcall(VM_PROC_NR, call, m);
} }
@ -49,7 +49,7 @@ void *vm_map_cacheblock(dev_t dev, off_t dev_offset,
ino, ino_offset, flags, blocksize) != OK) ino, ino_offset, flags, blocksize) != OK)
return MAP_FAILED; return MAP_FAILED;
return m.m_u.m_vmmcp_reply.addr; return m.m_vmmcp_reply.addr;
} }
int vm_set_cacheblock(void *block, dev_t dev, off_t dev_offset, int vm_set_cacheblock(void *block, dev_t dev, off_t dev_offset,
@ -70,7 +70,7 @@ vm_clear_cache(dev_t dev)
memset(&m, 0, sizeof(m)); memset(&m, 0, sizeof(m));
m.m_u.m_vmmcp.dev = dev; m.m_vmmcp.dev = dev;
return _taskcall(VM_PROC_NR, VM_CLEARCACHE, &m); return _taskcall(VM_PROC_NR, VM_CLEARCACHE, &m);
} }

View file

@ -275,7 +275,7 @@ int main(__unused int argc, __unused char ** argv)
else if (is_ipc_notify(ipc_status)) { else if (is_ipc_notify(ipc_status)) {
switch (m.m_source) { switch (m.m_source) {
case CLOCK: case CLOCK:
expire_timers(m.NOTIFY_TIMESTAMP); expire_timers(m.m_notify.timestamp);
break; break;
case DS_PROC_NR: case DS_PROC_NR:
ds_event(); ds_event();

View file

@ -65,7 +65,7 @@ int main()
/* Check for system notifications first. Special cases. */ /* Check for system notifications first. Special cases. */
if (is_ipc_notify(ipc_status)) { if (is_ipc_notify(ipc_status)) {
if (_ENDPOINT_P(m_in.m_source) == CLOCK) if (_ENDPOINT_P(m_in.m_source) == CLOCK)
expire_timers(m_in.NOTIFY_TIMESTAMP); expire_timers(m_in.m_notify.timestamp);
/* done, continue */ /* done, continue */
continue; continue;

View file

@ -81,7 +81,7 @@ int main(void)
continue; continue;
default: /* heartbeat notification */ default: /* heartbeat notification */
if (rproc_ptr[who_p] != NULL) { /* mark heartbeat time */ if (rproc_ptr[who_p] != NULL) { /* mark heartbeat time */
rproc_ptr[who_p]->r_alive_tm = m.NOTIFY_TIMESTAMP; rproc_ptr[who_p]->r_alive_tm = m.m_notify.timestamp;
} else { } else {
printf("RS: warning: got unexpected notify message from %d\n", printf("RS: warning: got unexpected notify message from %d\n",
m.m_source); m.m_source);

View file

@ -237,7 +237,7 @@ int srv_update(endpoint_t src_e, endpoint_t dst_e)
*===========================================================================*/ *===========================================================================*/
void update_period(message *m_ptr) void update_period(message *m_ptr)
{ {
clock_t now = m_ptr->NOTIFY_TIMESTAMP; clock_t now = m_ptr->m_notify.timestamp;
short has_update_timed_out; short has_update_timed_out;
message m; message m;
struct rprocpub *rpub; struct rprocpub *rpub;

View file

@ -730,7 +730,7 @@ message *m_ptr;
{ {
register struct rproc *rp; register struct rproc *rp;
register struct rprocpub *rpub; register struct rprocpub *rpub;
clock_t now = m_ptr->NOTIFY_TIMESTAMP; clock_t now = m_ptr->m_notify.timestamp;
int s; int s;
long period; long period;

View file

@ -50,7 +50,7 @@ int main(void)
if (is_ipc_notify(ipc_status)) { if (is_ipc_notify(ipc_status)) {
switch(who_e) { switch(who_e) {
case CLOCK: case CLOCK:
expire_timers(m_in.NOTIFY_TIMESTAMP); expire_timers(m_in.m_notify.timestamp);
continue; /* don't reply */ continue; /* don't reply */
default : default :
result = ENOSYS; result = ENOSYS;

View file

@ -109,7 +109,7 @@ int main(void)
break; break;
case CLOCK: case CLOCK:
/* Timer expired. Used only for select(). Check it. */ /* Timer expired. Used only for select(). Check it. */
expire_timers(m_in.NOTIFY_TIMESTAMP); expire_timers(m_in.m_notify.timestamp);
break; break;
default: default:
printf("VFS: ignoring notification from %d\n", who_e); printf("VFS: ignoring notification from %d\n", who_e);

View file

@ -85,11 +85,11 @@ static int cache_resize(struct vmproc *vmp, struct vir_region *vr, vir_bytes l)
int int
do_mapcache(message *msg) do_mapcache(message *msg)
{ {
dev_t dev = msg->m_u.m_vmmcp.dev; dev_t dev = msg->m_vmmcp.dev;
u64_t dev_off = msg->m_u.m_vmmcp.dev_offset; off_t dev_off = msg->m_vmmcp.dev_offset;
u64_t ino_off = msg->m_u.m_vmmcp.ino_offset; off_t ino_off = msg->m_vmmcp.ino_offset;
int n; int n;
phys_bytes bytes = msg->m_u.m_vmmcp.pages * VM_PAGE_SIZE; phys_bytes bytes = msg->m_vmmcp.pages * VM_PAGE_SIZE;
struct vir_region *vr; struct vir_region *vr;
struct vmproc *caller; struct vmproc *caller;
vir_bytes offset; vir_bytes offset;
@ -120,7 +120,7 @@ do_mapcache(message *msg)
assert(offset < vr->length); assert(offset < vr->length);
if(!(hb = find_cached_page_bydev(dev, dev_off + offset, if(!(hb = find_cached_page_bydev(dev, dev_off + offset,
msg->m_u.m_vmmcp.ino, ino_off + offset, 1))) { msg->m_vmmcp.ino, ino_off + offset, 1))) {
map_unmap_region(caller, vr, 0, bytes); map_unmap_region(caller, vr, 0, bytes);
return ENOENT; return ENOENT;
} }
@ -141,7 +141,7 @@ do_mapcache(message *msg)
memset(msg, 0, sizeof(*msg)); memset(msg, 0, sizeof(*msg));
msg->m_u.m_vmmcp_reply.addr = (void *) vr->vaddr; msg->m_vmmcp_reply.addr = (void *) vr->vaddr;
assert(vr); assert(vr);
@ -170,13 +170,13 @@ int
do_setcache(message *msg) do_setcache(message *msg)
{ {
int r; int r;
dev_t dev = msg->m_u.m_vmmcp.dev; dev_t dev = msg->m_vmmcp.dev;
u64_t dev_off = (u64_t) msg->m_u.m_vmmcp.dev_offset; off_t dev_off = msg->m_vmmcp.dev_offset;
u64_t ino_off = (u64_t) msg->m_u.m_vmmcp.ino_offset; off_t ino_off = msg->m_vmmcp.ino_offset;
int n; int n;
struct vmproc *caller; struct vmproc *caller;
phys_bytes offset; phys_bytes offset;
phys_bytes bytes = msg->m_u.m_vmmcp.pages * VM_PAGE_SIZE; phys_bytes bytes = msg->m_vmmcp.pages * VM_PAGE_SIZE;
if(bytes < VM_PAGE_SIZE) return EINVAL; if(bytes < VM_PAGE_SIZE) return EINVAL;
@ -191,7 +191,7 @@ do_setcache(message *msg)
for(offset = 0; offset < bytes; offset += VM_PAGE_SIZE) { for(offset = 0; offset < bytes; offset += VM_PAGE_SIZE) {
struct vir_region *region; struct vir_region *region;
struct phys_region *phys_region = NULL; struct phys_region *phys_region = NULL;
vir_bytes v = (vir_bytes) msg->m_u.m_vmmcp.block + offset; vir_bytes v = (vir_bytes) msg->m_vmmcp.block + offset;
struct cached_page *hb; struct cached_page *hb;
if(!(region = map_lookup(caller, v, &phys_region))) { if(!(region = map_lookup(caller, v, &phys_region))) {
@ -205,7 +205,7 @@ do_setcache(message *msg)
} }
if((hb=find_cached_page_bydev(dev, dev_off + offset, if((hb=find_cached_page_bydev(dev, dev_off + offset,
msg->m_u.m_vmmcp.ino, ino_off + offset, 1))) { msg->m_vmmcp.ino, ino_off + offset, 1))) {
/* block inode info updated */ /* block inode info updated */
if(hb->page != phys_region->ph) { if(hb->page != phys_region->ph) {
/* previous cache entry has become /* previous cache entry has become
@ -235,7 +235,7 @@ do_setcache(message *msg)
phys_region->memtype = &mem_type_cache; phys_region->memtype = &mem_type_cache;
if((r=addcache(dev, dev_off + offset, if((r=addcache(dev, dev_off + offset,
msg->m_u.m_vmmcp.ino, ino_off + offset, phys_region->ph)) != OK) { msg->m_vmmcp.ino, ino_off + offset, phys_region->ph)) != OK) {
printf("VM: addcache failed\n"); printf("VM: addcache failed\n");
return r; return r;
} }
@ -256,7 +256,7 @@ do_clearcache(message *msg)
{ {
dev_t dev; dev_t dev;
dev = msg->m_u.m_vmmcp.dev; dev = msg->m_vmmcp.dev;
clear_cache_bydev(dev); clear_cache_bydev(dev);

View file

@ -141,18 +141,18 @@ int do_vfs_mmap(message *m)
/* It might be disabled */ /* It might be disabled */
if(!enable_filemap) return ENXIO; if(!enable_filemap) return ENXIO;
clearend = m->m_u.m_vm_vfs.clearend; clearend = m->m_vm_vfs.clearend;
flags = m->m_u.m_vm_vfs.flags; flags = m->m_vm_vfs.flags;
if((r=vm_isokendpt(m->m_u.m_vm_vfs.who, &n)) != OK) if((r=vm_isokendpt(m->m_vm_vfs.who, &n)) != OK)
panic("bad ep %d from vfs", m->m_u.m_vm_vfs.who); panic("bad ep %d from vfs", m->m_vm_vfs.who);
vmp = &vmproc[n]; vmp = &vmproc[n];
return mmap_file(vmp, m->m_u.m_vm_vfs.fd, m->m_u.m_vm_vfs.offset, return mmap_file(vmp, m->m_vm_vfs.fd, m->m_vm_vfs.offset,
MAP_PRIVATE | MAP_FIXED, MAP_PRIVATE | MAP_FIXED,
m->m_u.m_vm_vfs.ino, m->m_u.m_vm_vfs.dev, m->m_vm_vfs.ino, m->m_vm_vfs.dev,
(u64_t) LONG_MAX * VM_PAGE_SIZE, (u64_t) LONG_MAX * VM_PAGE_SIZE,
m->m_u.m_vm_vfs.vaddr, m->m_u.m_vm_vfs.len, &v, m->m_vm_vfs.vaddr, m->m_vm_vfs.len, &v,
clearend, flags, 0); clearend, flags, 0);
} }