~ubuntu-branches/debian/experimental/linux-tools/experimental

« back to all changes in this revision

Viewing changes to include/linux/interrupt.h

  • Committer: Package Import Robot
  • Author(s): Ben Hutchings
  • Date: 2014-02-02 16:57:49 UTC
  • mfrom: (1.1.10) (0.1.21 sid)
  • Revision ID: package-import@ubuntu.com-20140202165749-tw94o9t1t0a8txk6
Tags: 3.13-1~exp2
Merge changes from sid up to 3.12.6-3

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
#include <linux/irqnr.h>
12
12
#include <linux/hardirq.h>
13
13
#include <linux/irqflags.h>
14
 
#include <linux/smp.h>
15
 
#include <linux/percpu.h>
16
14
#include <linux/hrtimer.h>
17
15
#include <linux/kref.h>
18
16
#include <linux/workqueue.h>
19
17
 
20
18
#include <linux/atomic.h>
21
19
#include <asm/ptrace.h>
 
20
#include <asm/irq.h>
22
21
 
23
22
/*
24
23
 * These correspond to the IORESOURCE_IRQ_* defines in
374
373
 
375
374
asmlinkage void do_softirq(void);
376
375
asmlinkage void __do_softirq(void);
 
376
 
 
377
#ifdef __ARCH_HAS_DO_SOFTIRQ
 
378
void do_softirq_own_stack(void);
 
379
#else
 
380
static inline void do_softirq_own_stack(void)
 
381
{
 
382
        __do_softirq();
 
383
}
 
384
#endif
 
385
 
377
386
extern void open_softirq(int nr, void (*action)(struct softirq_action *));
378
387
extern void softirq_init(void);
379
388
extern void __raise_softirq_irqoff(unsigned int nr);
381
390
extern void raise_softirq_irqoff(unsigned int nr);
382
391
extern void raise_softirq(unsigned int nr);
383
392
 
384
 
/* This is the worklist that queues up per-cpu softirq work.
385
 
 *
386
 
 * send_remote_sendirq() adds work to these lists, and
387
 
 * the softirq handler itself dequeues from them.  The queues
388
 
 * are protected by disabling local cpu interrupts and they must
389
 
 * only be accessed by the local cpu that they are for.
390
 
 */
391
 
DECLARE_PER_CPU(struct list_head [NR_SOFTIRQS], softirq_work_list);
392
 
 
393
393
DECLARE_PER_CPU(struct task_struct *, ksoftirqd);
394
394
 
395
395
static inline struct task_struct *this_cpu_ksoftirqd(void)
397
397
        return this_cpu_read(ksoftirqd);
398
398
}
399
399
 
400
 
/* Try to send a softirq to a remote cpu.  If this cannot be done, the
401
 
 * work will be queued to the local cpu.
402
 
 */
403
 
extern void send_remote_softirq(struct call_single_data *cp, int cpu, int softirq);
404
 
 
405
 
/* Like send_remote_softirq(), but the caller must disable local cpu interrupts
406
 
 * and compute the current cpu, passed in as 'this_cpu'.
407
 
 */
408
 
extern void __send_remote_softirq(struct call_single_data *cp, int cpu,
409
 
                                  int this_cpu, int softirq);
410
 
 
411
400
/* Tasklets --- multithreaded analogue of BHs.
412
401
 
413
402
   Main feature differing them of generic softirqs: tasklet