On Jul 23, 2009 at 19:59, Dragos Vingarzan <dragos.vingarzan(a)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