From: Steve S. <ste...@ho...> - 2004-11-24 02:49:14
|
Hi, While I was playing around with uml_switch, I started thinking that the code is a bit messy and really could use a facelift. I decided to sit down and do some grunt work to reorganize the code a bit to help make any future modifications to the program easier and more straightforward. Submitted for your inspection, testing, and hopeful addition to uml_router (from uml_utilites-20040406) are the following patches: Patch 1 fixes some minor bugs I noticed while making changes. It probably should be applied whether or not any of my more ambitious patches are used. Oh, and there's a stray core file for some reason in the directory that should be deleted... ;) Patch 2 adds files that are the basis of a simple IO event dispatcher. All IO processing can now be handled by a simple callback mechanisim. Patch 3 shows how to use the IO API added in patch 2 by adding a replacement stdin driver. It is over-engineered, but it is meant as an example template for writing other fd drivers. Patch 4 switches everything to the new API. I should note that these intermediate patches have not been tested to work, they just show how I got from here to there. Patch 5 adds glue and misc stuff that would be useful if one wanted to be more modular and break all the driver code out of the main file. Patch 6 (surprise) finally moves driver functions to their respective files. Not all is pretty (sockunix.c), but at least the code has now been coralled into functional groups. There is still a bit of an ifdef hell in uml_switch.c that needs work. It should be pretty straightforward to add a registration API to hide the gory details of hooking drivers into the system. If there's interest in my changes so far, I'll code up some driver registration stuff. It would be useful for my own work anyways. Enjoy! Steve Schmidtke |