]> Zhao Yanbai Git Server - minix.git/commitdiff
Use ds_retrieve_u32 to get the endpoint of inet and of the ethernet drivers.
authorPhilip Homburg <philip@cs.vu.nl>
Wed, 2 May 2007 11:30:16 +0000 (11:30 +0000)
committerPhilip Homburg <philip@cs.vu.nl>
Wed, 2 May 2007 11:30:16 +0000 (11:30 +0000)
servers/inet/inet.c
servers/inet/mnx_eth.c

index d7fefa9e4695bb8ab8402c57036fc379eab30346..c7f5de9555ae0ea8cb7c16e18619b377c9243144 100644 (file)
@@ -50,6 +50,7 @@ from DL_ETH:
 #include <time.h>
 #include <unistd.h>
 #include <sys/svrctl.h>
+#include <minix/ds.h>
 
 #include "mq.h"
 #include "qp.h"
@@ -96,6 +97,7 @@ PUBLIC void main()
        mq_t *mq;
        int r;
        int source, m_type, timerand, fd;
+       u32_t tasknr;
        struct fssignon device;
 #ifdef __minix_vmd
        struct systaskinfo info;
@@ -157,8 +159,10 @@ PUBLIC void main()
 #else /* Minix 3 */
 
        /* Our new identity as a server. */
-       if ((this_proc = getprocnr()) < 0)
-               ip_panic(( "unable to get own process nr\n"));
+       r= ds_retrieve_u32("inet", &tasknr);
+       if (r != OK)
+               ip_panic(("inet: ds_retrieve_u32 failed for 'inet': %d", r));
+       this_proc= tasknr;
 #endif
 
        /* Register the device group. */
index 859dc70991a3f92e4c188752ef1dcdbe8417d158..c5d38d52358478da74e978d66ec509ed8cab8ca0 100644 (file)
@@ -7,6 +7,7 @@ Copyright 1995 Philip Homburg
 */
 
 #include "inet.h"
+#include <minix/ds.h>
 #include <minix/safecopies.h>
 #include "proto.h"
 #include "osdep_eth.h"
@@ -37,7 +38,8 @@ FORWARD _PROTOTYPE( int asynsend, (endpoint_t dst, message *mp) );
 
 PUBLIC void osdep_eth_init()
 {
-       int i, j, r, tasknr, rport;
+       int i, j, r, rport;
+       u32_t tasknr;
        struct eth_conf *ecp;
        eth_port_t *eth_port, *rep;
        message mess;
@@ -102,7 +104,12 @@ PUBLIC void osdep_eth_init()
 #ifdef __minix_vmd
                r= sys_findproc(ecp->ec_task, &tasknr, 0);
 #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 
                if (r != OK)
                {