c51cd5fe91
Before safecopies, the IO_ENDPT and DL_ENDPT message fields were needed to know which actual process to copy data from/to, as that process may not always be the caller. Now that we have full safecopy support, these fields have become useless for that purpose: the owner of the grant is *always* the caller. Allowing the caller to supply another endpoint is in fact dangerous, because the callee may then end up using a grant from a third party. One could call this a variant of the confused deputy problem. From now on, safecopy calls should always use the caller's endpoint as grant owner. This fully obsoletes the DL_ENDPT field in the inet/ethernet protocol. IO_ENDPT has other uses besides identifying the grant owner though. This patch renames IO_ENDPT to USER_ENDPT, not only because that is a more fitting name (it should never be used for I/O after all), but also in order to intentionally break any old system source code outside the base system. If this patch breaks your code, fixing it is fairly simple: - DL_ENDPT should be replaced with m_source; - IO_ENDPT should be replaced with m_source when used for safecopies; - IO_ENDPT should be replaced with USER_ENDPT for any other use, e.g. when setting REP_ENDPT, matching requests in CANCEL calls, getting DEV_SELECT flags, and retrieving of the real user process's endpoint in DEV_OPEN. The changes in this patch are binary backward compatible. |
||
---|---|---|
.. | ||
3c501.c | ||
3c501.h | ||
3c503.c | ||
3c503.h | ||
3c509.c | ||
3c509.h | ||
8390.c | ||
8390.h | ||
devio.c | ||
dp.c | ||
dp.h | ||
Makefile | ||
ne.c | ||
ne.h | ||
netbuff.c | ||
README | ||
wd.c | ||
wd.h |
This is my implementation of a new network task for the Minix kernel. I did it initially to handle a 3c501 board (Etherlink), but those board are so unstable that it is not worth using them except for learning how to implement a driver. When I got a 3c509b board (Etherlink III) it was easier to write the code to handle them. The Minix code in 'dp8390.c' is too specific for the National chip set, so what I did was to remove as much as I needed of the code dependant from the chip and produce a generic task that, I hope, will be able to handle many more cards. $Log$ Revision 1.1 2005/06/29 10:16:46 beng Import of dpeth 3c501/3c509b/.. ethernet driver by Giovanni Falzoni <fgalzoni@inwind.it>. Revision 1.3 2004/04/14 12:49:07 lsodgf0 Changes for porting to Minix 2.0.4 run on BOCHS Revision 1.2 2002/03/25 14:16:09 lsodgf0 The driver for the NEx000 has been rewritten to be operational with the ACCTON 18xx (an NE1000 clone) The I/O routines for 16 bit cards are still untested.. Revision 1.1 2002/02/09 09:35:09 lsodgf0 Initial revision The package is not fully tested, i.e. I had only 3Com boards (3c501, 3c503, 3c503/16 and 3c509b) and WD8003. I got also a NE1000 clone but it was not fully operational and I could not appreciate the results. For this reason the changes done to the interface to I/O for 8 and 16 bits are not tested.