On Jul 23, 2009 at 19:59, Dragos Vingarzan dragos.vingarzan@gmail.com wrote: [...]
- sip-router_pt.diff
- added a drop_my_process() function - in the cdp module (Diameter)
we do have dynamic processes, which fork and exit distinctly from the ser ones, so we need this to clean-up. Without it, such usages would not be possible as the process table would fill and then new forks would be denied
That's very problematic. It breaks process_no, my_pid() and the assumption that the process number does not change. These assumptions are used when doing statistics (e.g. tm): a shared mem array is created with one "entry" for each process. Each process updates its own entry (e.g. tm_stats[process_no].s.t_created++ ) without needing any locking or atomic op (which scale very badly on multi-cpus due to cacheline ping-pongs). The same assumptions are used in the shm malloc ng (only testing prototypes for now in ll_malloc) and might be used in the future for implementing a RCU like mechanism.
Andrei