[lkml]   [2005]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: kmalloc without GFP_xxx?
    On Wednesday 29 June 2005 16:44, Steven Rostedt wrote:
    > On Wed, 29 Jun 2005, Arjan van de Ven wrote:
    > > >
    > > > but it sets irqs_disabled() IIRC.
    > >
    > > only spin_lock_irq() and co do.
    > > not the simple spin_lock()
    > >
    > It may be dangerous to use spin_lock with interrupts enabled, since you
    > have to make sure that no interrupt ever grabs that lock. Although I do
    > recall seeing a few locks like this. But even so, you can transfer the
    > latency of the interrupts going off while holding that lock to another CPU
    > which IMHO is a bad thing. Also a simple spin_lock would disable

    This is why I always use _irqsave. Less error prone.
    And locking is a very easy to get 'slightly' wrong, thus
    I trade 0.1% of performance for code simplicity.

    > preemption with CONFIG_PREEMPT set and that would make in_atomic fail.
    > But to implement a kmalloc_auto you would always need to have a preempt
    > count.
    > I'm not for a kmalloc_auto, but something like it would be useful for a
    > function that can work for either context, and just fail nicely if the
    > ATOMIC is set and the malloc can't get memory. A function like this would
    > currently have to always use ATOMIC even if it could have used KERNEL for
    > some scenarios, since it would suffer the same pitfalls as a kmalloc_auto
    > in determining its context.

    This is more or less what I meant. Why think about each kmalloc and when you
    eventually did get it right: "Aha, we _sometimes_ get called from spinlocked code,
    GFP_ATOMIC then" - you still do atomic alloc even if cases when you
    were _not_ called from locked code! Thus you needed to think longer and got
    code which is worse.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-06-29 16:20    [W:0.023 / U:176.004 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site