Use ds_retrieve_u32 to get the endpoint of inet and of the ethernet drivers.

This commit is contained in:
Philip Homburg 2007-05-02 11:30:16 +00:00
parent 9852471c08
commit 33d31720a5
2 changed files with 15 additions and 4 deletions

View File

@ -50,6 +50,7 @@ from DL_ETH:
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
#include <sys/svrctl.h> #include <sys/svrctl.h>
#include <minix/ds.h>
#include "mq.h" #include "mq.h"
#include "qp.h" #include "qp.h"
@ -96,6 +97,7 @@ PUBLIC void main()
mq_t *mq; mq_t *mq;
int r; int r;
int source, m_type, timerand, fd; int source, m_type, timerand, fd;
u32_t tasknr;
struct fssignon device; struct fssignon device;
#ifdef __minix_vmd #ifdef __minix_vmd
struct systaskinfo info; struct systaskinfo info;
@ -157,8 +159,10 @@ PUBLIC void main()
#else /* Minix 3 */ #else /* Minix 3 */
/* Our new identity as a server. */ /* Our new identity as a server. */
if ((this_proc = getprocnr()) < 0) r= ds_retrieve_u32("inet", &tasknr);
ip_panic(( "unable to get own process nr\n")); if (r != OK)
ip_panic(("inet: ds_retrieve_u32 failed for 'inet': %d", r));
this_proc= tasknr;
#endif #endif
/* Register the device group. */ /* Register the device group. */

View File

@ -7,6 +7,7 @@ Copyright 1995 Philip Homburg
*/ */
#include "inet.h" #include "inet.h"
#include <minix/ds.h>
#include <minix/safecopies.h> #include <minix/safecopies.h>
#include "proto.h" #include "proto.h"
#include "osdep_eth.h" #include "osdep_eth.h"
@ -37,7 +38,8 @@ FORWARD _PROTOTYPE( int asynsend, (endpoint_t dst, message *mp) );
PUBLIC void osdep_eth_init() PUBLIC void osdep_eth_init()
{ {
int i, j, r, tasknr, rport; int i, j, r, rport;
u32_t tasknr;
struct eth_conf *ecp; struct eth_conf *ecp;
eth_port_t *eth_port, *rep; eth_port_t *eth_port, *rep;
message mess; message mess;
@ -102,7 +104,12 @@ PUBLIC void osdep_eth_init()
#ifdef __minix_vmd #ifdef __minix_vmd
r= sys_findproc(ecp->ec_task, &tasknr, 0); r= sys_findproc(ecp->ec_task, &tasknr, 0);
#else /* Minix 3 */ #else /* Minix 3 */
r = _pm_findproc(ecp->ec_task, &tasknr); r= ds_retrieve_u32(ecp->ec_task, &tasknr);
if (r != OK && r != ESRCH)
{
printf("inet: ds_retrieve_u32 failed for '%s': %d\n",
ecp->ec_task, r);
}
#endif #endif
if (r != OK) if (r != OK)
{ {