Merge branch 'sched/urgent'; commit 'v2.6.29-rc5' into sched/core
This commit is contained in:
commit
5274f8354d
233 changed files with 15577 additions and 11029 deletions
|
|
@ -378,6 +378,7 @@ struct cgroup_subsys {
|
|||
* - initiating hotplug events
|
||||
*/
|
||||
struct mutex hierarchy_mutex;
|
||||
struct lock_class_key subsys_key;
|
||||
|
||||
/*
|
||||
* Link to parent, and list entry in parent's children.
|
||||
|
|
|
|||
|
|
@ -552,7 +552,12 @@ struct crypto_tfm *crypto_alloc_tfm(const char *alg_name,
|
|||
const struct crypto_type *frontend,
|
||||
u32 type, u32 mask);
|
||||
struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask);
|
||||
void crypto_free_tfm(struct crypto_tfm *tfm);
|
||||
void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm);
|
||||
|
||||
static inline void crypto_free_tfm(struct crypto_tfm *tfm)
|
||||
{
|
||||
return crypto_destroy_tfm(tfm, tfm);
|
||||
}
|
||||
|
||||
int alg_test(const char *driver, const char *alg, u32 type, u32 mask);
|
||||
|
||||
|
|
|
|||
|
|
@ -282,6 +282,18 @@ static inline void dmaengine_put(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NET_DMA
|
||||
#define net_dmaengine_get() dmaengine_get()
|
||||
#define net_dmaengine_put() dmaengine_put()
|
||||
#else
|
||||
static inline void net_dmaengine_get(void)
|
||||
{
|
||||
}
|
||||
static inline void net_dmaengine_put(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan,
|
||||
void *dest, void *src, size_t len);
|
||||
dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan,
|
||||
|
|
|
|||
|
|
@ -33,7 +33,8 @@ unsigned long hugetlb_total_pages(void);
|
|||
int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
unsigned long address, int write_access);
|
||||
int hugetlb_reserve_pages(struct inode *inode, long from, long to,
|
||||
struct vm_area_struct *vma);
|
||||
struct vm_area_struct *vma,
|
||||
int acctflags);
|
||||
void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed);
|
||||
|
||||
extern unsigned long hugepages_treat_as_movable;
|
||||
|
|
@ -138,7 +139,7 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb)
|
|||
|
||||
extern const struct file_operations hugetlbfs_file_operations;
|
||||
extern struct vm_operations_struct hugetlb_vm_ops;
|
||||
struct file *hugetlb_file_setup(const char *name, size_t);
|
||||
struct file *hugetlb_file_setup(const char *name, size_t, int);
|
||||
int hugetlb_get_quota(struct address_space *mapping, long delta);
|
||||
void hugetlb_put_quota(struct address_space *mapping, long delta);
|
||||
|
||||
|
|
@ -158,9 +159,9 @@ static inline void set_file_hugepages(struct file *file)
|
|||
}
|
||||
#else /* !CONFIG_HUGETLBFS */
|
||||
|
||||
#define is_file_hugepages(file) 0
|
||||
#define set_file_hugepages(file) BUG()
|
||||
#define hugetlb_file_setup(name,size) ERR_PTR(-ENOSYS)
|
||||
#define is_file_hugepages(file) 0
|
||||
#define set_file_hugepages(file) BUG()
|
||||
#define hugetlb_file_setup(name,size,acctflag) ERR_PTR(-ENOSYS)
|
||||
|
||||
#endif /* !CONFIG_HUGETLBFS */
|
||||
|
||||
|
|
|
|||
|
|
@ -48,12 +48,11 @@ extern struct fs_struct init_fs;
|
|||
.posix_timers = LIST_HEAD_INIT(sig.posix_timers), \
|
||||
.cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \
|
||||
.rlim = INIT_RLIMITS, \
|
||||
.cputime = { .totals = { \
|
||||
.utime = cputime_zero, \
|
||||
.stime = cputime_zero, \
|
||||
.sum_exec_runtime = 0, \
|
||||
.lock = __SPIN_LOCK_UNLOCKED(sig.cputime.totals.lock), \
|
||||
}, }, \
|
||||
.cputimer = { \
|
||||
.cputime = INIT_CPUTIME, \
|
||||
.running = 0, \
|
||||
.lock = __SPIN_LOCK_UNLOCKED(sig.cputimer.lock), \
|
||||
}, \
|
||||
}
|
||||
|
||||
extern struct nsproxy init_nsproxy;
|
||||
|
|
|
|||
|
|
@ -1129,8 +1129,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
|
|||
unsigned long flag, unsigned long pgoff);
|
||||
extern unsigned long mmap_region(struct file *file, unsigned long addr,
|
||||
unsigned long len, unsigned long flags,
|
||||
unsigned int vm_flags, unsigned long pgoff,
|
||||
int accountable);
|
||||
unsigned int vm_flags, unsigned long pgoff);
|
||||
|
||||
static inline unsigned long do_mmap(struct file *file, unsigned long addr,
|
||||
unsigned long len, unsigned long prot,
|
||||
|
|
|
|||
|
|
@ -515,7 +515,7 @@ enum
|
|||
|
||||
struct tc_drr_stats
|
||||
{
|
||||
u32 deficit;
|
||||
__u32 deficit;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -443,7 +443,6 @@ struct pacct_struct {
|
|||
* @utime: time spent in user mode, in &cputime_t units
|
||||
* @stime: time spent in kernel mode, in &cputime_t units
|
||||
* @sum_exec_runtime: total time spent on the CPU, in nanoseconds
|
||||
* @lock: lock for fields in this struct
|
||||
*
|
||||
* This structure groups together three kinds of CPU time that are
|
||||
* tracked for threads and thread groups. Most things considering
|
||||
|
|
@ -454,23 +453,33 @@ struct task_cputime {
|
|||
cputime_t utime;
|
||||
cputime_t stime;
|
||||
unsigned long long sum_exec_runtime;
|
||||
spinlock_t lock;
|
||||
};
|
||||
/* Alternate field names when used to cache expirations. */
|
||||
#define prof_exp stime
|
||||
#define virt_exp utime
|
||||
#define sched_exp sum_exec_runtime
|
||||
|
||||
#define INIT_CPUTIME \
|
||||
(struct task_cputime) { \
|
||||
.utime = cputime_zero, \
|
||||
.stime = cputime_zero, \
|
||||
.sum_exec_runtime = 0, \
|
||||
}
|
||||
|
||||
/**
|
||||
* struct thread_group_cputime - thread group interval timer counts
|
||||
* @totals: thread group interval timers; substructure for
|
||||
* uniprocessor kernel, per-cpu for SMP kernel.
|
||||
* struct thread_group_cputimer - thread group interval timer counts
|
||||
* @cputime: thread group interval timers.
|
||||
* @running: non-zero when there are timers running and
|
||||
* @cputime receives updates.
|
||||
* @lock: lock for fields in this struct.
|
||||
*
|
||||
* This structure contains the version of task_cputime, above, that is
|
||||
* used for thread group CPU clock calculations.
|
||||
* used for thread group CPU timer calculations.
|
||||
*/
|
||||
struct thread_group_cputime {
|
||||
struct task_cputime totals;
|
||||
struct thread_group_cputimer {
|
||||
struct task_cputime cputime;
|
||||
int running;
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -519,10 +528,10 @@ struct signal_struct {
|
|||
cputime_t it_prof_incr, it_virt_incr;
|
||||
|
||||
/*
|
||||
* Thread group totals for process CPU clocks.
|
||||
* See thread_group_cputime(), et al, for details.
|
||||
* Thread group totals for process CPU timers.
|
||||
* See thread_group_cputimer(), et al, for details.
|
||||
*/
|
||||
struct thread_group_cputime cputime;
|
||||
struct thread_group_cputimer cputimer;
|
||||
|
||||
/* Earliest-expiration cache. */
|
||||
struct task_cputime cputime_expires;
|
||||
|
|
@ -559,7 +568,7 @@ struct signal_struct {
|
|||
* Live threads maintain their own counters and add to these
|
||||
* in __exit_signal, except for the group leader.
|
||||
*/
|
||||
cputime_t cutime, cstime;
|
||||
cputime_t utime, stime, cutime, cstime;
|
||||
cputime_t gtime;
|
||||
cputime_t cgtime;
|
||||
unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;
|
||||
|
|
@ -567,6 +576,14 @@ struct signal_struct {
|
|||
unsigned long inblock, oublock, cinblock, coublock;
|
||||
struct task_io_accounting ioac;
|
||||
|
||||
/*
|
||||
* Cumulative ns of schedule CPU time fo dead threads in the
|
||||
* group, not including a zombie group leader, (This only differs
|
||||
* from jiffies_to_ns(utime + stime) if sched_clock uses something
|
||||
* other than jiffies.)
|
||||
*/
|
||||
unsigned long long sum_sched_runtime;
|
||||
|
||||
/*
|
||||
* We don't bother to synchronize most readers of this at all,
|
||||
* because there is no reader checking a limit that actually needs
|
||||
|
|
@ -2188,27 +2205,14 @@ static inline int spin_needbreak(spinlock_t *lock)
|
|||
/*
|
||||
* Thread group CPU time accounting.
|
||||
*/
|
||||
|
||||
static inline
|
||||
void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times)
|
||||
{
|
||||
struct task_cputime *totals = &tsk->signal->cputime.totals;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&totals->lock, flags);
|
||||
*times = *totals;
|
||||
spin_unlock_irqrestore(&totals->lock, flags);
|
||||
}
|
||||
void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times);
|
||||
void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times);
|
||||
|
||||
static inline void thread_group_cputime_init(struct signal_struct *sig)
|
||||
{
|
||||
sig->cputime.totals = (struct task_cputime){
|
||||
.utime = cputime_zero,
|
||||
.stime = cputime_zero,
|
||||
.sum_exec_runtime = 0,
|
||||
};
|
||||
|
||||
spin_lock_init(&sig->cputime.totals.lock);
|
||||
sig->cputimer.cputime = INIT_CPUTIME;
|
||||
spin_lock_init(&sig->cputimer.lock);
|
||||
sig->cputimer.running = 0;
|
||||
}
|
||||
|
||||
static inline void thread_group_cputime_free(struct signal_struct *sig)
|
||||
|
|
|
|||
|
|
@ -1045,50 +1045,36 @@ typedef struct mixer_vol_table {
|
|||
*/
|
||||
#define LOCL_STARTAUDIO 1
|
||||
|
||||
#if (!defined(__KERNEL__) && !defined(KERNEL) && !defined(INKERNEL) && !defined(_KERNEL)) || defined(USE_SEQ_MACROS)
|
||||
#if !defined(__KERNEL__) || defined(USE_SEQ_MACROS)
|
||||
/*
|
||||
* Some convenience macros to simplify programming of the
|
||||
* /dev/sequencer interface
|
||||
*
|
||||
* These macros define the API which should be used when possible.
|
||||
* This is a legacy interface for applications written against
|
||||
* the OSSlib-3.8 style interface. It is no longer possible
|
||||
* to actually link against OSSlib with this header, but we
|
||||
* still provide these macros for programs using them.
|
||||
*
|
||||
* If you want to use OSSlib, it is recommended that you get
|
||||
* the GPL version of OSS-4.x and build against that version
|
||||
* of the header.
|
||||
*
|
||||
* We redefine the extern keyword so that make headers_check
|
||||
* does not complain about SEQ_USE_EXTBUF.
|
||||
*/
|
||||
#define SEQ_DECLAREBUF() SEQ_USE_EXTBUF()
|
||||
|
||||
void seqbuf_dump(void); /* This function must be provided by programs */
|
||||
|
||||
extern int OSS_init(int seqfd, int buflen);
|
||||
extern void OSS_seqbuf_dump(int fd, unsigned char *buf, int buflen);
|
||||
extern void OSS_seq_advbuf(int len, int fd, unsigned char *buf, int buflen);
|
||||
extern void OSS_seq_needbuf(int len, int fd, unsigned char *buf, int buflen);
|
||||
extern void OSS_patch_caching(int dev, int chn, int patch,
|
||||
int fd, unsigned char *buf, int buflen);
|
||||
extern void OSS_drum_caching(int dev, int chn, int patch,
|
||||
int fd, unsigned char *buf, int buflen);
|
||||
extern void OSS_write_patch(int fd, unsigned char *buf, int len);
|
||||
extern int OSS_write_patch2(int fd, unsigned char *buf, int len);
|
||||
|
||||
#define SEQ_PM_DEFINES int __foo_bar___
|
||||
#ifdef OSSLIB
|
||||
# define SEQ_USE_EXTBUF() \
|
||||
extern unsigned char *_seqbuf; \
|
||||
extern int _seqbuflen;extern int _seqbufptr
|
||||
# define SEQ_DEFINEBUF(len) SEQ_USE_EXTBUF();static int _requested_seqbuflen=len
|
||||
# define _SEQ_ADVBUF(len) OSS_seq_advbuf(len, seqfd, _seqbuf, _seqbuflen)
|
||||
# define _SEQ_NEEDBUF(len) OSS_seq_needbuf(len, seqfd, _seqbuf, _seqbuflen)
|
||||
# define SEQ_DUMPBUF() OSS_seqbuf_dump(seqfd, _seqbuf, _seqbuflen)
|
||||
|
||||
# define SEQ_LOAD_GMINSTR(dev, instr) \
|
||||
OSS_patch_caching(dev, -1, instr, seqfd, _seqbuf, _seqbuflen)
|
||||
# define SEQ_LOAD_GMDRUM(dev, drum) \
|
||||
OSS_drum_caching(dev, -1, drum, seqfd, _seqbuf, _seqbuflen)
|
||||
#else /* !OSSLIB */
|
||||
#define SEQ_LOAD_GMINSTR(dev, instr)
|
||||
#define SEQ_LOAD_GMDRUM(dev, drum)
|
||||
|
||||
# define SEQ_LOAD_GMINSTR(dev, instr)
|
||||
# define SEQ_LOAD_GMDRUM(dev, drum)
|
||||
|
||||
# define SEQ_USE_EXTBUF() \
|
||||
extern unsigned char _seqbuf[]; \
|
||||
extern int _seqbuflen;extern int _seqbufptr
|
||||
#define _SEQ_EXTERN extern
|
||||
#define SEQ_USE_EXTBUF() \
|
||||
_SEQ_EXTERN unsigned char _seqbuf[]; \
|
||||
_SEQ_EXTERN int _seqbuflen; _SEQ_EXTERN int _seqbufptr
|
||||
|
||||
#ifndef USE_SIMPLE_MACROS
|
||||
/* Sample seqbuf_dump() implementation:
|
||||
|
|
@ -1131,7 +1117,6 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len);
|
|||
*/
|
||||
#define _SEQ_NEEDBUF(len) /* empty */
|
||||
#endif
|
||||
#endif /* !OSSLIB */
|
||||
|
||||
#define SEQ_VOLUME_MODE(dev, mode) {_SEQ_NEEDBUF(8);\
|
||||
_seqbuf[_seqbufptr] = SEQ_EXTENDED;\
|
||||
|
|
@ -1215,14 +1200,8 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len);
|
|||
_CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0)
|
||||
|
||||
#define SEQ_SET_PATCH SEQ_PGM_CHANGE
|
||||
#ifdef OSSLIB
|
||||
# define SEQ_PGM_CHANGE(dev, chn, patch) \
|
||||
{OSS_patch_caching(dev, chn, patch, seqfd, _seqbuf, _seqbuflen); \
|
||||
_CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0);}
|
||||
#else
|
||||
# define SEQ_PGM_CHANGE(dev, chn, patch) \
|
||||
#define SEQ_PGM_CHANGE(dev, chn, patch) \
|
||||
_CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
|
||||
#endif
|
||||
|
||||
#define SEQ_CONTROL(dev, chn, controller, value) \
|
||||
_CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
|
||||
|
|
@ -1300,19 +1279,12 @@ extern int OSS_write_patch2(int fd, unsigned char *buf, int len);
|
|||
/*
|
||||
* Patch loading.
|
||||
*/
|
||||
#ifdef OSSLIB
|
||||
# define SEQ_WRPATCH(patchx, len) \
|
||||
OSS_write_patch(seqfd, (char*)(patchx), len)
|
||||
# define SEQ_WRPATCH2(patchx, len) \
|
||||
OSS_write_patch2(seqfd, (char*)(patchx), len)
|
||||
#else
|
||||
# define SEQ_WRPATCH(patchx, len) \
|
||||
#define SEQ_WRPATCH(patchx, len) \
|
||||
{if (_seqbufptr) SEQ_DUMPBUF();\
|
||||
if (write(seqfd, (char*)(patchx), len)==-1) \
|
||||
perror("Write patch: /dev/sequencer");}
|
||||
# define SEQ_WRPATCH2(patchx, len) \
|
||||
#define SEQ_WRPATCH2(patchx, len) \
|
||||
(SEQ_DUMPBUF(), write(seqfd, (char*)(patchx), len))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -124,7 +124,12 @@ do { \
|
|||
#ifdef CONFIG_GENERIC_LOCKBREAK
|
||||
#define spin_is_contended(lock) ((lock)->break_lock)
|
||||
#else
|
||||
|
||||
#ifdef __raw_spin_is_contended
|
||||
#define spin_is_contended(lock) __raw_spin_is_contended(&(lock)->raw_lock)
|
||||
#else
|
||||
#define spin_is_contended(lock) (((void)(lock), 0))
|
||||
#endif /*__raw_spin_is_contended*/
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -95,13 +95,13 @@ struct old_linux_dirent;
|
|||
#define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__)
|
||||
#define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__)
|
||||
|
||||
#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
|
||||
#define SYSCALL_DEFINE1(...) SYSCALL_DEFINEx(1, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE2(...) SYSCALL_DEFINEx(2, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE3(...) SYSCALL_DEFINEx(3, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE4(...) SYSCALL_DEFINEx(4, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
|
||||
#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
|
||||
#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
#define SYSCALL_ALIAS(alias, name) \
|
||||
|
|
@ -121,21 +121,21 @@ struct old_linux_dirent;
|
|||
|
||||
#define SYSCALL_DEFINE(name) static inline long SYSC_##name
|
||||
#define SYSCALL_DEFINEx(x, name, ...) \
|
||||
asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)); \
|
||||
static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)); \
|
||||
asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__)) \
|
||||
asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__)); \
|
||||
static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__)); \
|
||||
asmlinkage long SyS##name(__SC_LONG##x(__VA_ARGS__)) \
|
||||
{ \
|
||||
__SC_TEST##x(__VA_ARGS__); \
|
||||
return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__)); \
|
||||
return (long) SYSC##name(__SC_CAST##x(__VA_ARGS__)); \
|
||||
} \
|
||||
SYSCALL_ALIAS(sys_##name, SyS_##name); \
|
||||
static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__))
|
||||
SYSCALL_ALIAS(sys##name, SyS##name); \
|
||||
static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__))
|
||||
|
||||
#else /* CONFIG_HAVE_SYSCALL_WRAPPERS */
|
||||
|
||||
#define SYSCALL_DEFINE(name) asmlinkage long sys_##name
|
||||
#define SYSCALL_DEFINEx(x, name, ...) \
|
||||
asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__))
|
||||
asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__))
|
||||
|
||||
#endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue