aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-29 23:35:01 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-29 23:35:01 -0400
commit6ffc1fee98c4b995eb3a0285f4f8fb467cb0306e (patch)
tree69a05892a41e7f7400fa598ee0bdf8027c8f0fd6 /include/linux
parente40152ee1e1c7a63f4777791863215e3faa37a86 (diff)
parent7c1ff4c544dd650cceff3cd69a04bcba60856678 (diff)
Merge branch 'master' into wip-merge-2.6.34
Simple merge between master and 2.6.34 with conflicts resolved. This commit does not compile, the following main problems are still unresolved: - spinlock -> raw_spinlock API changes - kfifo API changes - sched_class API changes Conflicts: Makefile arch/x86/include/asm/hw_irq.h arch/x86/include/asm/unistd_32.h arch/x86/kernel/syscall_table_32.S include/linux/hrtimer.h kernel/sched.c kernel/sched_fair.c
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/completion.h1
-rw-r--r--include/linux/fs.h21
-rw-r--r--include/linux/hrtimer.h25
-rw-r--r--include/linux/sched.h17
-rw-r--r--include/linux/smp.h5
-rw-r--r--include/linux/tick.h5
6 files changed, 62 insertions, 12 deletions
diff --git a/include/linux/completion.h b/include/linux/completion.h
index 4a6b604ef7e4..258bec13d424 100644
--- a/include/linux/completion.h
+++ b/include/linux/completion.h
@@ -88,6 +88,7 @@ extern bool completion_done(struct completion *x);
88 88
89extern void complete(struct completion *); 89extern void complete(struct completion *);
90extern void complete_all(struct completion *); 90extern void complete_all(struct completion *);
91extern void complete_n(struct completion *, int n);
91 92
92/** 93/**
93 * INIT_COMPLETION: - reinitialize a completion structure 94 * INIT_COMPLETION: - reinitialize a completion structure
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 44f35aea2f1f..894918440bc8 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -15,8 +15,8 @@
15 * nr_file rlimit, so it's safe to set up a ridiculously high absolute 15 * nr_file rlimit, so it's safe to set up a ridiculously high absolute
16 * upper limit on files-per-process. 16 * upper limit on files-per-process.
17 * 17 *
18 * Some programs (notably those using select()) may have to be 18 * Some programs (notably those using select()) may have to be
19 * recompiled to take full advantage of the new limits.. 19 * recompiled to take full advantage of the new limits..
20 */ 20 */
21 21
22/* Fixed constants first: */ 22/* Fixed constants first: */
@@ -173,7 +173,7 @@ struct inodes_stat_t {
173#define SEL_EX 4 173#define SEL_EX 4
174 174
175/* public flags for file_system_type */ 175/* public flags for file_system_type */
176#define FS_REQUIRES_DEV 1 176#define FS_REQUIRES_DEV 1
177#define FS_BINARY_MOUNTDATA 2 177#define FS_BINARY_MOUNTDATA 2
178#define FS_HAS_SUBTYPE 4 178#define FS_HAS_SUBTYPE 4
179#define FS_REVAL_DOT 16384 /* Check the paths ".", ".." for staleness */ 179#define FS_REVAL_DOT 16384 /* Check the paths ".", ".." for staleness */
@@ -471,7 +471,7 @@ struct iattr {
471 */ 471 */
472#include <linux/quota.h> 472#include <linux/quota.h>
473 473
474/** 474/**
475 * enum positive_aop_returns - aop return codes with specific semantics 475 * enum positive_aop_returns - aop return codes with specific semantics
476 * 476 *
477 * @AOP_WRITEPAGE_ACTIVATE: Informs the caller that page writeback has 477 * @AOP_WRITEPAGE_ACTIVATE: Informs the caller that page writeback has
@@ -481,7 +481,7 @@ struct iattr {
481 * be a candidate for writeback again in the near 481 * be a candidate for writeback again in the near
482 * future. Other callers must be careful to unlock 482 * future. Other callers must be careful to unlock
483 * the page if they get this return. Returned by 483 * the page if they get this return. Returned by
484 * writepage(); 484 * writepage();
485 * 485 *
486 * @AOP_TRUNCATED_PAGE: The AOP method that was handed a locked page has 486 * @AOP_TRUNCATED_PAGE: The AOP method that was handed a locked page has
487 * unlocked it and the page might have been truncated. 487 * unlocked it and the page might have been truncated.
@@ -720,6 +720,7 @@ static inline int mapping_writably_mapped(struct address_space *mapping)
720 720
721struct posix_acl; 721struct posix_acl;
722#define ACL_NOT_CACHED ((void *)(-1)) 722#define ACL_NOT_CACHED ((void *)(-1))
723struct inode_obj_id_table;
723 724
724struct inode { 725struct inode {
725 struct hlist_node i_hash; 726 struct hlist_node i_hash;
@@ -788,6 +789,8 @@ struct inode {
788 struct posix_acl *i_acl; 789 struct posix_acl *i_acl;
789 struct posix_acl *i_default_acl; 790 struct posix_acl *i_default_acl;
790#endif 791#endif
792 struct list_head i_obj_list;
793 struct mutex i_obj_mutex;
791 void *i_private; /* fs or device private pointer */ 794 void *i_private; /* fs or device private pointer */
792}; 795};
793 796
@@ -1000,10 +1003,10 @@ static inline int file_check_writeable(struct file *filp)
1000 1003
1001#define MAX_NON_LFS ((1UL<<31) - 1) 1004#define MAX_NON_LFS ((1UL<<31) - 1)
1002 1005
1003/* Page cache limit. The filesystems should put that into their s_maxbytes 1006/* Page cache limit. The filesystems should put that into their s_maxbytes
1004 limits, otherwise bad things can happen in VM. */ 1007 limits, otherwise bad things can happen in VM. */
1005#if BITS_PER_LONG==32 1008#if BITS_PER_LONG==32
1006#define MAX_LFS_FILESIZE (((u64)PAGE_CACHE_SIZE << (BITS_PER_LONG-1))-1) 1009#define MAX_LFS_FILESIZE (((u64)PAGE_CACHE_SIZE << (BITS_PER_LONG-1))-1)
1007#elif BITS_PER_LONG==64 1010#elif BITS_PER_LONG==64
1008#define MAX_LFS_FILESIZE 0x7fffffffffffffffUL 1011#define MAX_LFS_FILESIZE 0x7fffffffffffffffUL
1009#endif 1012#endif
@@ -2129,7 +2132,7 @@ extern int may_open(struct path *, int, int);
2129 2132
2130extern int kernel_read(struct file *, loff_t, char *, unsigned long); 2133extern int kernel_read(struct file *, loff_t, char *, unsigned long);
2131extern struct file * open_exec(const char *); 2134extern struct file * open_exec(const char *);
2132 2135
2133/* fs/dcache.c -- generic fs support functions */ 2136/* fs/dcache.c -- generic fs support functions */
2134extern int is_subdir(struct dentry *, struct dentry *); 2137extern int is_subdir(struct dentry *, struct dentry *);
2135extern int path_is_under(struct path *, struct path *); 2138extern int path_is_under(struct path *, struct path *);
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 5d86fb2309d2..b34823755ee4 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -167,6 +167,7 @@ struct hrtimer_clock_base {
167 * @nr_retries: Total number of hrtimer interrupt retries 167 * @nr_retries: Total number of hrtimer interrupt retries
168 * @nr_hangs: Total number of hrtimer interrupt hangs 168 * @nr_hangs: Total number of hrtimer interrupt hangs
169 * @max_hang_time: Maximum time spent in hrtimer_interrupt 169 * @max_hang_time: Maximum time spent in hrtimer_interrupt
170 * @to_pull: LITMUS^RT list of timers to be pulled on this cpu
170 */ 171 */
171struct hrtimer_cpu_base { 172struct hrtimer_cpu_base {
172 raw_spinlock_t lock; 173 raw_spinlock_t lock;
@@ -180,6 +181,26 @@ struct hrtimer_cpu_base {
180 unsigned long nr_hangs; 181 unsigned long nr_hangs;
181 ktime_t max_hang_time; 182 ktime_t max_hang_time;
182#endif 183#endif
184 struct list_head to_pull;
185};
186
187#define HRTIMER_START_ON_INACTIVE 0
188#define HRTIMER_START_ON_QUEUED 1
189
190/*
191 * struct hrtimer_start_on_info - save timer info on remote cpu
192 * @list: list of hrtimer_start_on_info on remote cpu (to_pull)
193 * @timer: timer to be triggered on remote cpu
194 * @time: time event
195 * @mode: timer mode
196 * @state: activity flag
197 */
198struct hrtimer_start_on_info {
199 struct list_head list;
200 struct hrtimer *timer;
201 ktime_t time;
202 enum hrtimer_mode mode;
203 atomic_t state;
183}; 204};
184 205
185static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) 206static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time)
@@ -348,6 +369,10 @@ __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
348 unsigned long delta_ns, 369 unsigned long delta_ns,
349 const enum hrtimer_mode mode, int wakeup); 370 const enum hrtimer_mode mode, int wakeup);
350 371
372extern int hrtimer_start_on(int cpu, struct hrtimer_start_on_info *info,
373 struct hrtimer *timer, ktime_t time,
374 const enum hrtimer_mode mode);
375
351extern int hrtimer_cancel(struct hrtimer *timer); 376extern int hrtimer_cancel(struct hrtimer *timer);
352extern int hrtimer_try_to_cancel(struct hrtimer *timer); 377extern int hrtimer_try_to_cancel(struct hrtimer *timer);
353 378
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 2b7b81df78b3..225347d97d47 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -38,6 +38,7 @@
38#define SCHED_BATCH 3 38#define SCHED_BATCH 3
39/* SCHED_ISO: reserved but not implemented yet */ 39/* SCHED_ISO: reserved but not implemented yet */
40#define SCHED_IDLE 5 40#define SCHED_IDLE 5
41#define SCHED_LITMUS 6
41/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */ 42/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */
42#define SCHED_RESET_ON_FORK 0x40000000 43#define SCHED_RESET_ON_FORK 0x40000000
43 44
@@ -94,6 +95,8 @@ struct sched_param {
94 95
95#include <asm/processor.h> 96#include <asm/processor.h>
96 97
98#include <litmus/rt_param.h>
99
97struct exec_domain; 100struct exec_domain;
98struct futex_pi_state; 101struct futex_pi_state;
99struct robust_list_head; 102struct robust_list_head;
@@ -1166,6 +1169,7 @@ struct sched_rt_entity {
1166}; 1169};
1167 1170
1168struct rcu_node; 1171struct rcu_node;
1172struct od_table_entry;
1169 1173
1170struct task_struct { 1174struct task_struct {
1171 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 1175 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
@@ -1250,9 +1254,9 @@ struct task_struct {
1250 unsigned long stack_canary; 1254 unsigned long stack_canary;
1251#endif 1255#endif
1252 1256
1253 /* 1257 /*
1254 * pointers to (original) parent process, youngest child, younger sibling, 1258 * pointers to (original) parent process, youngest child, younger sibling,
1255 * older sibling, respectively. (p->father can be replaced with 1259 * older sibling, respectively. (p->father can be replaced with
1256 * p->real_parent->pid) 1260 * p->real_parent->pid)
1257 */ 1261 */
1258 struct task_struct *real_parent; /* real parent process */ 1262 struct task_struct *real_parent; /* real parent process */
@@ -1464,6 +1468,13 @@ struct task_struct {
1464 int make_it_fail; 1468 int make_it_fail;
1465#endif 1469#endif
1466 struct prop_local_single dirties; 1470 struct prop_local_single dirties;
1471
1472 /* LITMUS RT parameters and state */
1473 struct rt_param rt_param;
1474
1475 /* references to PI semaphores, etc. */
1476 struct od_table_entry *od_table;
1477
1467#ifdef CONFIG_LATENCYTOP 1478#ifdef CONFIG_LATENCYTOP
1468 int latency_record_count; 1479 int latency_record_count;
1469 struct latency_record latency_record[LT_SAVECOUNT]; 1480 struct latency_record latency_record[LT_SAVECOUNT];
@@ -2018,7 +2029,7 @@ static inline int dequeue_signal_lock(struct task_struct *tsk, sigset_t *mask, s
2018 spin_unlock_irqrestore(&tsk->sighand->siglock, flags); 2029 spin_unlock_irqrestore(&tsk->sighand->siglock, flags);
2019 2030
2020 return ret; 2031 return ret;
2021} 2032}
2022 2033
2023extern void block_all_signals(int (*notifier)(void *priv), void *priv, 2034extern void block_all_signals(int (*notifier)(void *priv), void *priv,
2024 sigset_t *mask); 2035 sigset_t *mask);
diff --git a/include/linux/smp.h b/include/linux/smp.h
index cfa2d20e35f1..f86d40768e7f 100644
--- a/include/linux/smp.h
+++ b/include/linux/smp.h
@@ -80,6 +80,11 @@ int smp_call_function_any(const struct cpumask *mask,
80 void (*func)(void *info), void *info, int wait); 80 void (*func)(void *info), void *info, int wait);
81 81
82/* 82/*
83 * sends a 'pull timer' event to a remote CPU
84 */
85extern void smp_send_pull_timers(int cpu);
86
87/*
83 * Generic and arch helpers 88 * Generic and arch helpers
84 */ 89 */
85#ifdef CONFIG_USE_GENERIC_SMP_HELPERS 90#ifdef CONFIG_USE_GENERIC_SMP_HELPERS
diff --git a/include/linux/tick.h b/include/linux/tick.h
index d2ae79e21be3..25d0cf41d3fd 100644
--- a/include/linux/tick.h
+++ b/include/linux/tick.h
@@ -73,6 +73,11 @@ extern int tick_is_oneshot_available(void);
73extern struct tick_device *tick_get_device(int cpu); 73extern struct tick_device *tick_get_device(int cpu);
74 74
75# ifdef CONFIG_HIGH_RES_TIMERS 75# ifdef CONFIG_HIGH_RES_TIMERS
76/* LITMUS^RT tick alignment */
77#define LINUX_DEFAULT_TICKS 0
78#define LITMUS_ALIGNED_TICKS 1
79#define LITMUS_STAGGERED_TICKS 2
80
76extern int tick_init_highres(void); 81extern int tick_init_highres(void);
77extern int tick_program_event(ktime_t expires, int force); 82extern int tick_program_event(ktime_t expires, int force);
78extern void tick_setup_sched_timer(void); 83extern void tick_setup_sched_timer(void);