Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 158327
b: refs/heads/master
c: 613afbf
h: refs/heads/master
i:
  158325: 58a1d81
  158323: 7fd1349
  158319: c7461e1
v: v3
  • Loading branch information
Frederic Weisbecker authored and Ingo Molnar committed Jul 18, 2009
1 parent 08eece8 commit 2b24aff
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6f80bd985fe242c2e6a8b6209ed20b0495d3d63b
refs/heads/master: 613afbf83298efaead05ebcac23d2285609d7160
1 change: 1 addition & 0 deletions trunk/fs/dcache.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include <linux/swap.h>
#include <linux/bootmem.h>
#include <linux/fs_struct.h>
#include <linux/hardirq.h>
#include "internal.h"

int sysctl_vfs_cache_pressure __read_mostly = 100;
Expand Down
29 changes: 19 additions & 10 deletions trunk/include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -2286,17 +2286,26 @@ static inline int need_resched(void)
*/
extern int _cond_resched(void);

static inline int cond_resched(void)
{
return _cond_resched();
}
#define cond_resched() ({ \
__might_sleep(__FILE__, __LINE__, 0); \
_cond_resched(); \
})

extern int cond_resched_lock(spinlock_t * lock);
extern int cond_resched_softirq(void);
static inline int cond_resched_bkl(void)
{
return _cond_resched();
}
extern int __cond_resched_lock(spinlock_t *lock);

#define cond_resched_lock(lock) ({ \
__might_sleep(__FILE__, __LINE__, PREEMPT_OFFSET); \
__cond_resched_lock(lock); \
})

extern int __cond_resched_softirq(void);

#define cond_resched_softirq() ({ \
__might_sleep(__FILE__, __LINE__, SOFTIRQ_OFFSET); \
__cond_resched_softirq(); \
})

#define cond_resched_bkl() cond_resched()

/*
* Does a critical section need to be broken due to another
Expand Down
12 changes: 5 additions & 7 deletions trunk/kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -6610,8 +6610,6 @@ static inline int should_resched(void)

static void __cond_resched(void)
{
__might_sleep(__FILE__, __LINE__, 0);

add_preempt_count(PREEMPT_ACTIVE);
schedule();
sub_preempt_count(PREEMPT_ACTIVE);
Expand All @@ -6628,14 +6626,14 @@ int __sched _cond_resched(void)
EXPORT_SYMBOL(_cond_resched);

/*
* cond_resched_lock() - if a reschedule is pending, drop the given lock,
* __cond_resched_lock() - if a reschedule is pending, drop the given lock,
* call schedule, and on return reacquire the lock.
*
* This works OK both with and without CONFIG_PREEMPT. We do strange low-level
* operations here to prevent schedule() from being called twice (once via
* spin_unlock(), once by hand).
*/
int cond_resched_lock(spinlock_t *lock)
int __cond_resched_lock(spinlock_t *lock)
{
int resched = should_resched();
int ret = 0;
Expand All @@ -6651,9 +6649,9 @@ int cond_resched_lock(spinlock_t *lock)
}
return ret;
}
EXPORT_SYMBOL(cond_resched_lock);
EXPORT_SYMBOL(__cond_resched_lock);

int __sched cond_resched_softirq(void)
int __sched __cond_resched_softirq(void)
{
BUG_ON(!in_softirq());

Expand All @@ -6665,7 +6663,7 @@ int __sched cond_resched_softirq(void)
}
return 0;
}
EXPORT_SYMBOL(cond_resched_softirq);
EXPORT_SYMBOL(__cond_resched_softirq);

/**
* yield - yield the current processor to other threads.
Expand Down

0 comments on commit 2b24aff

Please sign in to comment.