Declare and call functions that check arguments and return a status code.

This commit is contained in:
Philip Homburg 2008-02-22 15:56:12 +00:00
parent 8a07b7687a
commit fecd153c2c
2 changed files with 42 additions and 40 deletions

View File

@ -24,7 +24,6 @@ FORWARD _PROTOTYPE( void do_find_dev, (message *mp) );
FORWARD _PROTOTYPE( void do_ids, (message *mp) );
FORWARD _PROTOTYPE( void do_dev_name, (message *mp) );
FORWARD _PROTOTYPE( void do_dev_name_s, (message *mp) );
FORWARD _PROTOTYPE( void do_slot_name, (message *mp) );
FORWARD _PROTOTYPE( void do_slot_name_s, (message *mp) );
FORWARD _PROTOTYPE( void do_set_acl, (message *mp) );
FORWARD _PROTOTYPE( void do_del_acl, (message *mp) );
@ -64,7 +63,6 @@ int main(void)
case BUSC_PCI_FIND_DEV: do_find_dev(&m); break;
case BUSC_PCI_IDS: do_ids(&m); break;
case BUSC_PCI_DEV_NAME: do_dev_name(&m); break;
case BUSC_PCI_SLOT_NAME: do_slot_name(&m); break;
case BUSC_PCI_RESERVE: do_reserve(&m); break;
case BUSC_PCI_ATTR_R8: do_attr_r8(&m); break;
case BUSC_PCI_ATTR_R16: do_attr_r16(&m); break;
@ -189,10 +187,16 @@ message *mp;
devind= mp->m1_i1;
pci_ids(devind, &vid, &did);
r= pci_ids_s(devind, &vid, &did);
if (r != OK)
{
printf("pci:do_ids: failed for devind %d: %d\n",
devind, r);
}
mp->m1_i1= vid;
mp->m1_i2= did;
mp->m_type= OK;
mp->m_type= r;
r= send(mp->m_source, mp);
if (r != 0)
{
@ -275,34 +279,6 @@ message *mp;
}
}
PRIVATE void do_slot_name(mp)
message *mp;
{
int r, devind, name_len, len;
char *name_ptr, *name;
devind= mp->m1_i1;
name_len= mp->m1_i2;
name_ptr= mp->m1_p1;
name= pci_slot_name(devind);
len= strlen(name)+1;
if (len > name_len)
len= name_len;
printf("PCI: pci`do_slot_name: calling do_vircopy\n");
r= sys_vircopy(SELF, D, (vir_bytes)name, mp->m_source, D,
(vir_bytes)name_ptr, len);
mp->m_type= r;
r= send(mp->m_source, mp);
if (r != 0)
{
printf("PCI: do_slot_name: unable to send to %d: %d\n",
mp->m_source, r);
}
}
PRIVATE void do_slot_name_s(mp)
message *mp;
{
@ -314,12 +290,21 @@ message *mp;
name_len= mp->m1_i2;
gid= mp->m1_i3;
name= pci_slot_name(devind);
r= pci_slot_name_s(devind, &name);
if (r != OK)
{
printf("pci:do_slot_name_s: failed for devind %d: %d\n",
devind, r);
}
len= strlen(name)+1;
if (len > name_len)
len= name_len;
r= sys_safecopyto(mp->m_source, gid, 0, (vir_bytes)name, len, D);
if (r == OK)
{
len= strlen(name)+1;
if (len > name_len)
len= name_len;
r= sys_safecopyto(mp->m_source, gid, 0,
(vir_bytes)name, len, D);
}
mp->m_type= r;
r= send(mp->m_source, mp);
@ -437,9 +422,15 @@ message *mp;
devind= mp->m2_i1;
port= mp->m2_i2;
v= pci_attr_r8(devind, port);
r= pci_attr_r8_s(devind, port, &v);
if (r != OK)
{
printf(
"pci:do_attr_r8: pci_attr_r8_s(%d, %d, ...) failed: %d\n",
devind, port, r);
}
mp->m2_l1= v;
mp->m_type= OK;
mp->m_type= r;
r= send(mp->m_source, mp);
if (r != 0)
{
@ -477,7 +468,13 @@ message *mp;
devind= mp->m2_i1;
port= mp->m2_i2;
v= pci_attr_r32(devind, port);
r= pci_attr_r32_s(devind, port, &v);
if (r != OK)
{
printf(
"pci:do_attr_r32: pci_attr_r32_s(%d, %d, ...) failed: %d\n",
devind, port, r);
}
mp->m2_l1= v;
mp->m_type= OK;
r= send(mp->m_source, mp);

View File

@ -89,6 +89,11 @@ _PROTOTYPE( int pci_first_dev_a, (struct rs_pci *aclp, int *devindp,
_PROTOTYPE( int pci_next_dev_a, (struct rs_pci *aclp, int *devindp,
u16_t *vidp, u16_t *didp) );
_PROTOTYPE( int pci_attr_r8_s, (int devind, int port, u8_t *vp) );
_PROTOTYPE( int pci_attr_r32_s, (int devind, int port, u32_t *vp) );
_PROTOTYPE( int pci_slot_name_s, (int devind, char **cpp) );
_PROTOTYPE( int pci_ids_s, (int devind, u16_t *vidp, u16_t *didp) );
/*
* $PchId: pci.h,v 1.4 2001/12/06 20:21:22 philip Exp $
*/