wake up user space thread from kernel space ISR


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users wake up user space thread from kernel space ISR
# 1  
Old 06-03-2009
wake up user space thread from kernel space ISR

Hello, I'm searching for a proper way to let the kernel space ISR(implemented in a kernel module) wake up a user space thread on a hardware interrupt.

Except for sending a real-time signal, is it possible to use a semaphore?

I've searched it on google, but it seems impossible to share a semaphore between user space and kernel space in common linux. Only some real-timer linux versions like RTAI provides a set of private API to inter-operate a semaphore between kernel and user space.

And there is no header file of Posix or SystemV semaphore APIs in linux kernel source, either.

So I wonder whether it is possible to do it via a semaphore ? Or is it a better way to use netlink?

Thank you in advance !
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Gawk --- produce the output in pattern space instead of END space

hi, I'm trying to calculate IP addresses and their respective calls to our apache Server. The standard format of the input is HOST IP DATE/TIME - - "GET/POST reuest" "User Agent" HOST IP DATE/TIME - - "GET/POST reuest" "User Agent" HOST IP DATE/TIME - - "GET/POST reuest" "User Agent" HOST... (2 Replies)
Discussion started by: busyboy
2 Replies

2. Fedora

Need to incrwase PHYSICAL VOLUME space on hard drive with free space on it

Hi, I run Fedora 17. I created a physical volume of 30GB on a disk with 60GB of space so there is 30GB of free space. On the physical volume, I created my volume group and logical volumes. I assigned all the space in the physical volume to my volume group. I need to add the 30GB of free space... (1 Reply)
Discussion started by: mojoman
1 Replies

3. Programming

How to sleep and wake a thread???

Hi guys, I am creating two posix threads. I have some queries, hopefully you will help me out with them 1) How can I put a thread to indefinite sleep, for indefinite time period. I am familiar with this sleep(5); for 5 second, how can I make it indefinite?? 2) How can one thread wake another... (11 Replies)
Discussion started by: gabam
11 Replies

4. UNIX for Dummies Questions & Answers

Kernel/ user space and high/ low mem

Need some clarification on this.... 1. how are kernel/ user spaces and high/low memory related? 2. What do they all mean when i have the kernel command line as: "console=ttyS0,115200 root=/dev/sda2 rw mem=exactmap memmap=1M@0 memmap=96M@1M irqpoll" or 2. what do mem and memmap mean in... (3 Replies)
Discussion started by: dragonpoint
3 Replies

5. Linux

Linux Device Driver: avoid mem copy from/to user/kernel space

I recently started working with Linux and wrote my first device driver for a hardware chip controlled by a host CPU running Linux 2.6.x kernel. 1. The user space process makes an IOCTL call with pointer to a user memory buffer. 2. The kernel device driver in the big switch-case of IOCTL,... (1 Reply)
Discussion started by: agaurav
1 Replies

6. UNIX for Dummies Questions & Answers

Linux Device Driver: how can an ISR wake up a user-thread?

Hi all, Is it possible to do the following in Linux (kernel 2.6.x): - A user-space thread goes to "sleep". Using any call/mechanism - On a hardware generated interrupt, the Interrupt handler (ISR) "wakes" the sleeping user-thread. I have seen wait_event() and wake_up() but it appears... (1 Reply)
Discussion started by: agaurav
1 Replies

7. Shell Programming and Scripting

Calculate total space, total used space and total free space in filesystem names matching keyword

Good afternoon! Im new at scripting and Im trying to write a script to calculate total space, total used space and total free space in filesystem names matching a keyword (in this one we will use keyword virginia). Please dont be mean or harsh, like I said Im new and trying my best. Scripting... (4 Replies)
Discussion started by: bigben1220
4 Replies

8. UNIX for Advanced & Expert Users

Can kernel process access user address space ?

Can kernel process access user address space ? (2 Replies)
Discussion started by: subhotech
2 Replies

9. Programming

Access process memory from kernel space

Hi, I'm currently working on a project to help the analysis of malware from inside the kernel to avoid any kind of detection. So I need to be able to read the process memory from my kernel module. As of now, I'm stuck at converting a virtual memory address (for example 0x080483e8 found... (3 Replies)
Discussion started by: anonymoose
3 Replies
Login or Register to Ask a Question
sleep(9r)																 sleep(9r)

NAME
sleep - General: Puts a calling process to sleep SYNOPSIS
void sleep( caddr_t *channel, long pri ); ARGUMENTS
Specifies a unique address associated with the calling kernel thread to be put to sleep. Specifies whether the sleep request is interrupt- ible. Setting this argument to the PCATCH flag causes the process to sleep in an interruptible state (that is, the kernel thread can take asynchronous signals). Not setting the PCATCH flag causes the process to sleep in an uninterruptible state (that is, the kernel thread can- not take asynchronous signals). DESCRIPTION
The sleep routine puts a calling process to sleep on the address specified by the channel argument. Some common addresses are the lbolt argument, a buf structure, and a proc structure. This address should be unique to prevent unexpected wake/sleep cycles, which can occur if different processes are sleeping on the same address accidentally. If you set the PCATCH flag in the pri argument, the sleep routine puts signals on the queue and does not wake up the sleeping process. The sleep and wakeup routines block and then wake up a process. Generally, device drivers call these routines to wait for the transfer to complete an interrupt from the device. That is, the write routine of the device driver sleeps on the address of a known location, and the device's Interrupt Service Interface (ISI) wakes the process when the device interrupts. It is the responsibility of the wakened process to check if the condition for which it was sleeping has been removed. NOTES
The operating system provides two ways to put a process to sleep: interruptible and uninterruptible. The sleep routine performs an uninter- ruptible sleep operation if you do not set the PCATCH flag and an interruptible sleep operation if you set the PCATCH flag. This means that device drivers cannot call sleep at interrupt context because at interrupt context there is no calling process to be put to sleep. Thus, a device driver's Interrupt Service Interface (ISI) and those routines called from within the ISI must not call the sleep routine. On this operating system, you cannot use pri to set the scheduling priority of the calling process. RETURN VALUES
None FILES
SEE ALSO
Routines: wakeup(9r) sleep(9r)