Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
softirq.c File Reference
#include <linux/export.h>
#include <linux/kernel_stat.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/notifier.h>
#include <linux/percpu.h>
#include <linux/cpu.h>
#include <linux/freezer.h>
#include <linux/kthread.h>
#include <linux/rcupdate.h>
#include <linux/ftrace.h>
#include <linux/smp.h>
#include <linux/smpboot.h>
#include <linux/tick.h>
#include <trace/events/irq.h>
#include <asm/irq.h>

Go to the source code of this file.

Data Structures

struct  tasklet_head
 

Macros

#define CREATE_TRACE_POINTS
 
#define MAX_SOFTIRQ_RESTART   10
 

Functions

 EXPORT_SYMBOL (irq_stat)
 
 DEFINE_PER_CPU (struct task_struct *, ksoftirqd)
 
void local_bh_disable (void)
 
 EXPORT_SYMBOL (local_bh_disable)
 
void _local_bh_enable (void)
 
 EXPORT_SYMBOL (_local_bh_enable)
 
void local_bh_enable (void)
 
 EXPORT_SYMBOL (local_bh_enable)
 
void local_bh_enable_ip (unsigned long ip)
 
 EXPORT_SYMBOL (local_bh_enable_ip)
 
asmlinkage void __do_softirq (void)
 
asmlinkage void do_softirq (void)
 
void irq_enter (void)
 
void irq_exit (void)
 
void raise_softirq_irqoff (unsigned int nr)
 
void raise_softirq (unsigned int nr)
 
void __raise_softirq_irqoff (unsigned int nr)
 
void open_softirq (int nr, void(*action)(struct softirq_action *))
 
void __tasklet_schedule (struct tasklet_struct *t)
 
 EXPORT_SYMBOL (__tasklet_schedule)
 
void __tasklet_hi_schedule (struct tasklet_struct *t)
 
 EXPORT_SYMBOL (__tasklet_hi_schedule)
 
void __tasklet_hi_schedule_first (struct tasklet_struct *t)
 
 EXPORT_SYMBOL (__tasklet_hi_schedule_first)
 
void tasklet_init (struct tasklet_struct *t, void(*func)(unsigned long), unsigned long data)
 
 EXPORT_SYMBOL (tasklet_init)
 
void tasklet_kill (struct tasklet_struct *t)
 
 EXPORT_SYMBOL (tasklet_kill)
 
void tasklet_hrtimer_init (struct tasklet_hrtimer *ttimer, enum hrtimer_restart(*function)(struct hrtimer *), clockid_t which_clock, enum hrtimer_mode mode)
 
 EXPORT_SYMBOL_GPL (tasklet_hrtimer_init)
 
 DEFINE_PER_CPU (struct list_head[NR_SOFTIRQS], softirq_work_list)
 
 EXPORT_PER_CPU_SYMBOL (softirq_work_list)
 
void __send_remote_softirq (struct call_single_data *cp, int cpu, int this_cpu, int softirq)
 
 EXPORT_SYMBOL (__send_remote_softirq)
 
void send_remote_softirq (struct call_single_data *cp, int cpu, int softirq)
 
 EXPORT_SYMBOL (send_remote_softirq)
 
void __init softirq_init (void)
 
 early_initcall (spawn_ksoftirqd)
 
int __init __weak early_irq_init (void)
 

Variables

irq_cpustat_t irq_stat[NR_CPUS____cacheline_aligned
 
charsoftirq_to_name [NR_SOFTIRQS]
 

Macro Definition Documentation

#define CREATE_TRACE_POINTS

Definition at line 29 of file softirq.c.

#define MAX_SOFTIRQ_RESTART   10

Definition at line 206 of file softirq.c.

Function Documentation

asmlinkage void __do_softirq ( void  )

Definition at line 208 of file softirq.c.

void __raise_softirq_irqoff ( unsigned int  nr)

Definition at line 388 of file softirq.c.

void __send_remote_softirq ( struct call_single_data cp,
int  cpu,
int  this_cpu,
int  softirq 
)

__send_remote_softirq - try to schedule softirq work on a remote cpu : private SMP call function data area : the remote cpu : the currently executing cpu : the softirq for the work

Attempt to schedule softirq work on a remote cpu. If this cannot be done, the work is instead queued up on the local cpu.

Interrupts must be disabled.

Definition at line 664 of file softirq.c.

void __tasklet_hi_schedule ( struct tasklet_struct t)

Definition at line 425 of file softirq.c.

void __tasklet_hi_schedule_first ( struct tasklet_struct t)

Definition at line 439 of file softirq.c.

void __tasklet_schedule ( struct tasklet_struct t)

Definition at line 411 of file softirq.c.

void _local_bh_enable ( void  )

Definition at line 151 of file softirq.c.

DEFINE_PER_CPU ( struct task_struct ,
ksoftirqd   
)
DEFINE_PER_CPU ( struct list_head  [NR_SOFTIRQS],
softirq_work_list   
)
asmlinkage void do_softirq ( void  )

Definition at line 282 of file softirq.c.

early_initcall ( spawn_ksoftirqd  )
int __init __weak early_irq_init ( void  )

Definition at line 864 of file softirq.c.

EXPORT_PER_CPU_SYMBOL ( softirq_work_list  )
EXPORT_SYMBOL ( irq_stat  )
EXPORT_SYMBOL ( local_bh_disable  )
EXPORT_SYMBOL ( _local_bh_enable  )
EXPORT_SYMBOL ( local_bh_enable  )
EXPORT_SYMBOL ( local_bh_enable_ip  )
EXPORT_SYMBOL ( __tasklet_schedule  )
EXPORT_SYMBOL ( __tasklet_hi_schedule  )
EXPORT_SYMBOL ( __tasklet_hi_schedule_first  )
EXPORT_SYMBOL ( tasklet_init  )
EXPORT_SYMBOL ( tasklet_kill  )
EXPORT_SYMBOL ( __send_remote_softirq  )
EXPORT_SYMBOL ( send_remote_softirq  )
EXPORT_SYMBOL_GPL ( tasklet_hrtimer_init  )
void irq_enter ( void  )

Definition at line 305 of file softirq.c.

void irq_exit ( void  )

Definition at line 342 of file softirq.c.

void local_bh_disable ( void  )

Definition at line 128 of file softirq.c.

void local_bh_enable ( void  )

Definition at line 185 of file softirq.c.

void local_bh_enable_ip ( unsigned long  ip)

Definition at line 191 of file softirq.c.

void open_softirq ( int  nr,
void(*)(struct softirq_action *)  action 
)

Definition at line 394 of file softirq.c.

void raise_softirq ( unsigned int  nr)

Definition at line 379 of file softirq.c.

void raise_softirq_irqoff ( unsigned int  nr)
inline

Definition at line 362 of file softirq.c.

void send_remote_softirq ( struct call_single_data cp,
int  cpu,
int  softirq 
)

send_remote_softirq - try to schedule softirq work on a remote cpu : private SMP call function data area : the remote cpu : the softirq for the work

Like __send_remote_softirq except that disabling interrupts and computing the current cpu is done for the caller.

Definition at line 680 of file softirq.c.

void __init softirq_init ( void  )

Definition at line 725 of file softirq.c.

void tasklet_hrtimer_init ( struct tasklet_hrtimer ttimer,
enum hrtimer_restart(*)(struct hrtimer *)  function,
clockid_t  which_clock,
enum hrtimer_mode  mode 
)

tasklet_hrtimer_init - Init a tasklet/hrtimer combo for softirq callbacks : tasklet_hrtimer which is initialized : hrtimer callback function which gets called from softirq context : clock id (CLOCK_MONOTONIC/CLOCK_REALTIME) : hrtimer mode (HRTIMER_MODE_ABS/HRTIMER_MODE_REL)

Definition at line 588 of file softirq.c.

void tasklet_init ( struct tasklet_struct t,
void(*)(unsigned long func,
unsigned long  data 
)

Definition at line 521 of file softirq.c.

void tasklet_kill ( struct tasklet_struct t)

Definition at line 533 of file softirq.c.

Variable Documentation

Definition at line 52 of file softirq.c.

char* softirq_to_name[NR_SOFTIRQS]
Initial value:
= {
"HI", "TIMER", "NET_TX", "NET_RX", "BLOCK", "BLOCK_IOPOLL",
"TASKLET", "SCHED", "HRTIMER", "RCU"
}

Definition at line 60 of file softirq.c.