lkml.org 
[lkml]   [2005]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [patch 1/2] fork_connector: add a fork connector
    Date
    On Thursday, March 17, 2005 1:04 am, Guillaume Thouvenin wrote:
    > +static inline void fork_connector(pid_t parent, pid_t child)
    > +{
    > + static DEFINE_SPINLOCK(cn_fork_lock);
    > + static __u32 seq; /* used to test if message is lost */
    > +
    > + if (cn_fork_enable) {
    > + struct cn_msg *msg;
    > +
    > + __u8 buffer[CN_FORK_MSG_SIZE];
    > +
    > + msg = (struct cn_msg *)buffer;
    > +
    > + memcpy(&msg->id, &cb_fork_id, sizeof(msg->id));
    > + spin_lock(&cn_fork_lock);
    > + msg->seq = seq++;
    > + spin_unlock(&cn_fork_lock);

    As I mentioned before, this won't work very well on a large CPU count system.
    cn_fork_lock will be taken by each CPU everytime it does a fork, meaning that
    forks will be very slow if lots of CPUs are doing them at the same time. Is
    there a more scalable way to ensure message delivery?

    Jesse
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:11    [W:0.022 / U:0.432 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site