misc drivers: remove more non-safecopy support
This commit is contained in:
parent
f56c4001d5
commit
294112db54
5 changed files with 11 additions and 64 deletions
|
@ -134,12 +134,6 @@
|
||||||
#define BUSC_PCI_IDS (BUSC_RQ_BASE + 4) /* Get vid/did from an
|
#define BUSC_PCI_IDS (BUSC_RQ_BASE + 4) /* Get vid/did from an
|
||||||
* index
|
* index
|
||||||
*/
|
*/
|
||||||
#define BUSC_PCI_DEV_NAME (BUSC_RQ_BASE + 5) /* Get the name of a
|
|
||||||
* PCI device
|
|
||||||
*/
|
|
||||||
#define BUSC_PCI_SLOT_NAME (BUSC_RQ_BASE + 6) /* Get the name of a
|
|
||||||
* PCI slot
|
|
||||||
*/
|
|
||||||
#define BUSC_PCI_RESERVE (BUSC_RQ_BASE + 7) /* Reserve a PCI dev */
|
#define BUSC_PCI_RESERVE (BUSC_RQ_BASE + 7) /* Reserve a PCI dev */
|
||||||
#define BUSC_PCI_ATTR_R8 (BUSC_RQ_BASE + 8) /* Read 8-bit
|
#define BUSC_PCI_ATTR_R8 (BUSC_RQ_BASE + 8) /* Read 8-bit
|
||||||
* attribute value
|
* attribute value
|
||||||
|
|
|
@ -1275,7 +1275,7 @@ unsigned nr_req; /* length of request vector */
|
||||||
(vir_bytes)(dma_buf+dma_buf_offset),
|
(vir_bytes)(dma_buf+dma_buf_offset),
|
||||||
n, D);
|
n, D);
|
||||||
if (s != OK) {
|
if (s != OK) {
|
||||||
panic("w_transfer: sys_vircopy failed: %d", s);
|
panic("w_transfer: sys_safecopy failed: %d", s);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
memcpy((char *) iov->iov_addr + addr_offset,
|
memcpy((char *) iov->iov_addr + addr_offset,
|
||||||
|
@ -1625,7 +1625,7 @@ int *do_copyoutp;
|
||||||
addr_offset, (vir_bytes)dma_buf+offset,
|
addr_offset, (vir_bytes)dma_buf+offset,
|
||||||
n, D);
|
n, D);
|
||||||
if (r != OK) {
|
if (r != OK) {
|
||||||
panic("setup_dma: sys_vircopy failed: %d", r);
|
panic("setup_dma: sys_safecopy failed: %d", r);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
memcpy(dma_buf + offset,
|
memcpy(dma_buf + offset,
|
||||||
|
|
|
@ -324,7 +324,7 @@ unsigned nr_req; /* length of request vector */
|
||||||
chunk, D);
|
chunk, D);
|
||||||
|
|
||||||
if (r != OK)
|
if (r != OK)
|
||||||
panic("sys_vircopy failed: %d", r);
|
panic("sys_safecopy failed: %d", r);
|
||||||
} else {
|
} else {
|
||||||
memcpy((char *) iop->iov_addr,
|
memcpy((char *) iop->iov_addr,
|
||||||
bios_buf_v+count, chunk);
|
bios_buf_v+count, chunk);
|
||||||
|
|
|
@ -11,7 +11,6 @@ FORWARD _PROTOTYPE( void do_first_dev, (message *mp) );
|
||||||
FORWARD _PROTOTYPE( void do_next_dev, (message *mp) );
|
FORWARD _PROTOTYPE( void do_next_dev, (message *mp) );
|
||||||
FORWARD _PROTOTYPE( void do_find_dev, (message *mp) );
|
FORWARD _PROTOTYPE( void do_find_dev, (message *mp) );
|
||||||
FORWARD _PROTOTYPE( void do_ids, (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_dev_name_s, (message *mp) );
|
||||||
FORWARD _PROTOTYPE( void do_slot_name_s, (message *mp) );
|
FORWARD _PROTOTYPE( void do_slot_name_s, (message *mp) );
|
||||||
FORWARD _PROTOTYPE( void do_set_acl, (message *mp) );
|
FORWARD _PROTOTYPE( void do_set_acl, (message *mp) );
|
||||||
|
@ -65,7 +64,6 @@ int main(void)
|
||||||
case BUSC_PCI_NEXT_DEV: do_next_dev(&m); break;
|
case BUSC_PCI_NEXT_DEV: do_next_dev(&m); break;
|
||||||
case BUSC_PCI_FIND_DEV: do_find_dev(&m); break;
|
case BUSC_PCI_FIND_DEV: do_find_dev(&m); break;
|
||||||
case BUSC_PCI_IDS: do_ids(&m); break;
|
case BUSC_PCI_IDS: do_ids(&m); break;
|
||||||
case BUSC_PCI_DEV_NAME: do_dev_name(&m); break;
|
|
||||||
case BUSC_PCI_RESERVE: do_reserve(&m); break;
|
case BUSC_PCI_RESERVE: do_reserve(&m); break;
|
||||||
case BUSC_PCI_ATTR_R8: do_attr_r8(&m); break;
|
case BUSC_PCI_ATTR_R8: do_attr_r8(&m); break;
|
||||||
case BUSC_PCI_ATTR_R16: do_attr_r16(&m); break;
|
case BUSC_PCI_ATTR_R16: do_attr_r16(&m); break;
|
||||||
|
@ -224,43 +222,6 @@ message *mp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PRIVATE void do_dev_name(mp)
|
|
||||||
message *mp;
|
|
||||||
{
|
|
||||||
int r, name_len, len;
|
|
||||||
u16_t vid, did;
|
|
||||||
char *name_ptr, *name;
|
|
||||||
|
|
||||||
vid= mp->m1_i1;
|
|
||||||
did= mp->m1_i2;
|
|
||||||
name_len= mp->m1_i3;
|
|
||||||
name_ptr= mp->m1_p1;
|
|
||||||
|
|
||||||
name= pci_dev_name(vid, did);
|
|
||||||
if (name == NULL)
|
|
||||||
{
|
|
||||||
/* No name */
|
|
||||||
r= ENOENT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
len= strlen(name)+1;
|
|
||||||
if (len > name_len)
|
|
||||||
len= name_len;
|
|
||||||
printf("PCI: pci`do_dev_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_dev_name: unable to send to %d: %d\n",
|
|
||||||
mp->m_source, r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PRIVATE void do_dev_name_s(mp)
|
PRIVATE void do_dev_name_s(mp)
|
||||||
message *mp;
|
message *mp;
|
||||||
{
|
{
|
||||||
|
|
|
@ -98,15 +98,13 @@ PRIVATE int port_base; /* I/O port for printer */
|
||||||
PRIVATE int proc_nr; /* user requesting the printing */
|
PRIVATE int proc_nr; /* user requesting the printing */
|
||||||
PRIVATE cp_grant_id_t grant_nr; /* grant on which print happens */
|
PRIVATE cp_grant_id_t grant_nr; /* grant on which print happens */
|
||||||
PRIVATE int user_left; /* bytes of output left in user buf */
|
PRIVATE int user_left; /* bytes of output left in user buf */
|
||||||
PRIVATE vir_bytes user_vir_g; /* start of user buf (address or grant) */
|
|
||||||
PRIVATE vir_bytes user_vir_d; /* offset in user buf */
|
PRIVATE vir_bytes user_vir_d; /* offset in user buf */
|
||||||
PRIVATE int user_safe; /* address or grant? */
|
|
||||||
PUBLIC int writing; /* nonzero while write is in progress */
|
PUBLIC int writing; /* nonzero while write is in progress */
|
||||||
PRIVATE int irq_hook_id; /* id of irq hook at kernel */
|
PRIVATE int irq_hook_id; /* id of irq hook at kernel */
|
||||||
|
|
||||||
FORWARD _PROTOTYPE( void do_cancel, (message *m_ptr) );
|
FORWARD _PROTOTYPE( void do_cancel, (message *m_ptr) );
|
||||||
FORWARD _PROTOTYPE( void output_done, (void) );
|
FORWARD _PROTOTYPE( void output_done, (void) );
|
||||||
FORWARD _PROTOTYPE( void do_write, (message *m_ptr, int safe) );
|
FORWARD _PROTOTYPE( void do_write, (message *m_ptr) );
|
||||||
FORWARD _PROTOTYPE( void do_status, (message *m_ptr) );
|
FORWARD _PROTOTYPE( void do_status, (message *m_ptr) );
|
||||||
FORWARD _PROTOTYPE( void prepare_output, (void) );
|
FORWARD _PROTOTYPE( void prepare_output, (void) );
|
||||||
FORWARD _PROTOTYPE( void do_initialize, (void) );
|
FORWARD _PROTOTYPE( void do_initialize, (void) );
|
||||||
|
@ -157,7 +155,7 @@ PUBLIC int main(int argc, char *argv[])
|
||||||
case DEV_CLOSE:
|
case DEV_CLOSE:
|
||||||
reply(TASK_REPLY, pr_mess.m_source, pr_mess.IO_ENDPT, OK);
|
reply(TASK_REPLY, pr_mess.m_source, pr_mess.IO_ENDPT, OK);
|
||||||
break;
|
break;
|
||||||
case DEV_WRITE_S: do_write(&pr_mess, 1); break;
|
case DEV_WRITE_S: do_write(&pr_mess); break;
|
||||||
case DEV_STATUS: do_status(&pr_mess); break;
|
case DEV_STATUS: do_status(&pr_mess); break;
|
||||||
case CANCEL: do_cancel(&pr_mess); break;
|
case CANCEL: do_cancel(&pr_mess); break;
|
||||||
default:
|
default:
|
||||||
|
@ -203,9 +201,8 @@ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info)
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* do_write *
|
* do_write *
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
PRIVATE void do_write(m_ptr, safe)
|
PRIVATE void do_write(m_ptr)
|
||||||
register message *m_ptr; /* pointer to the newly arrived message */
|
register message *m_ptr; /* pointer to the newly arrived message */
|
||||||
int safe; /* use virtual addresses or grant id's? */
|
|
||||||
{
|
{
|
||||||
/* The printer is used by sending DEV_WRITE messages to it. Process one. */
|
/* The printer is used by sending DEV_WRITE messages to it. Process one. */
|
||||||
|
|
||||||
|
@ -230,11 +227,9 @@ int safe; /* use virtual addresses or grant id's? */
|
||||||
proc_nr = m_ptr->IO_ENDPT;
|
proc_nr = m_ptr->IO_ENDPT;
|
||||||
user_left = m_ptr->COUNT;
|
user_left = m_ptr->COUNT;
|
||||||
orig_count = m_ptr->COUNT;
|
orig_count = m_ptr->COUNT;
|
||||||
user_vir_g = (vir_bytes) m_ptr->ADDRESS; /* Address or grant id. */
|
user_vir_d = 0; /* Offset. */
|
||||||
user_vir_d = 0; /* Offset. */
|
|
||||||
user_safe = safe; /* Address or grant? */
|
|
||||||
writing = TRUE;
|
writing = TRUE;
|
||||||
grant_nr = safe ? (cp_grant_id_t) m_ptr->ADDRESS : GRANT_INVALID;
|
grant_nr = (cp_grant_id_t) m_ptr->IO_GRANT;
|
||||||
|
|
||||||
retries = MAX_ONLINE_RETRIES + 1;
|
retries = MAX_ONLINE_RETRIES + 1;
|
||||||
while (--retries > 0) {
|
while (--retries > 0) {
|
||||||
|
@ -397,12 +392,9 @@ PRIVATE void prepare_output()
|
||||||
register int chunk;
|
register int chunk;
|
||||||
|
|
||||||
if ( (chunk = user_left) > sizeof obuf) chunk = sizeof obuf;
|
if ( (chunk = user_left) > sizeof obuf) chunk = sizeof obuf;
|
||||||
if(user_safe) {
|
|
||||||
s=sys_safecopyfrom(proc_nr, user_vir_g, user_vir_d,
|
s=sys_safecopyfrom(proc_nr, grant_nr, user_vir_d, (vir_bytes) obuf,
|
||||||
(vir_bytes) obuf, chunk, D);
|
chunk, D);
|
||||||
} else {
|
|
||||||
s=sys_datacopy(proc_nr, user_vir_g, SELF, (vir_bytes) obuf, chunk);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(s != OK) {
|
if(s != OK) {
|
||||||
done_status = EFAULT;
|
done_status = EFAULT;
|
||||||
|
|
Loading…
Reference in a new issue