Sponsored Content
Operating Systems Linux does sending a signal cause task switching Post 302312355 by pfarre on Friday 1st of May 2009 03:09:59 AM
Old 05-01-2009
does sending a signal cause task switching

Hi all,

i am porting a system, that used to manipulate memory across processes using an interrupt handler - which means that upon return from the interrupt handler the memory change would be finished. I am trying to simulate this using signals on Linux 2.6.2x.

What i would like to know is wether sending a signal (ex. kill( pid , SIGUSR1 ) ) from a process will cause the kernel to perform taskswitching and put the calling process in queue, allowing the signal handler to run if it is ready?


A simplified scenario:
We have a shared memory area attached to both processes "share".

Process1:
...
share->variable = 0;
kill( Process2_pid , SIGUSR1 )
printf("share->variable= %d\n",share->variable);
...

Process2:
SIGUSR1_handler()
{
share->variable = 1;
}

It seems that the printf allways prints a "1" . Which would mean that taskswitching occurs, and that the handler in process2 has finished when process1 returns from kill().

But is this something one can rely on Running Linux 2.6.2x ?


Regards
Paul
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Sending a signal from Unix to Windows

Hi all, I was wondering if anyone could help me here. I have got a Unix Server (Solaris 8) which we access over the network from a Windows NT machine using Exceed. The Unix box has Samba installed so it is very easy to send a signal from Windows to UNIX by simply creating a dummy file which... (3 Replies)
Discussion started by: robbiegregg
3 Replies

2. Shell Programming and Scripting

su (switching to other user)

Hi, what is the use of the double quotes and !! in the following code segment: su - user1 << ""!! > /dev/null 2>&1 echo "welcome user1" EOF !! also what is the difference between below: su - user1 << ""!! > /dev/null 2>&1 and su - $USER << ""!!!> /dev/null 2>&1. Note: $USER =... (2 Replies)
Discussion started by: bjagadeesh
2 Replies

3. Shell Programming and Scripting

comment and Uncomment single task out of multiple task

I have a file contains TASK gsnmpproxy { CommandLine = $SMCHOME/bin/gsnmpProxy.exe } TASK gsnmpdbgui { CommandLine = $SMCHOME/bin/gsnmpdbgui.exe I would like to comment and than uncomment specific task eg TASK gsnmpproxy Pls suggest how to do in shell script (9 Replies)
Discussion started by: madhusmita
9 Replies

4. Shell Programming and Scripting

Switching between two users

Can any one tell me : How we can switch between two users without prompting for the password. (In the SHELL SCRIPT can we fetch the USERID and PASSWORD from a specified file, without using SUDO command)? (2 Replies)
Discussion started by: deepusunil
2 Replies

5. Shell Programming and Scripting

Parse an XML task list to create each task.xml file

I have an task definition listing xml file that contains a list of tasks such as <TASKLIST <TASK definition="Completion date" id="Taskname1" Some other <CODE name="Code12" <Parameter pname="Dog" input="5.6" units="feet" etc /Parameter> <Parameter... (3 Replies)
Discussion started by: MissI
3 Replies

6. UNIX for Dummies Questions & Answers

Sending signal from child to parent process!

Hi All, I facing a problem in handling signals between parent process communication. I am trying to send a signal(SIGINT) from child to parent. I am using kill function to do so and I am trying to read the signal using sigaction(). But the program is ending abruptly and I am not able to figure out... (4 Replies)
Discussion started by: vkn_1985
4 Replies

7. OS X (Apple)

vt switching

greetings, i hope this hasn't been covered previously. has anyone heard of a .kext or daemon that would allow linux or (open)solaris-like vt switching? googling didn't help much.. i know os x allows a '>console' login from loginwindow.app, but i'm mainly interested in this because there are... (0 Replies)
Discussion started by: bamdad
0 Replies

8. Solaris

The switching in the different AP's

HI, I am using the windows 2003 server R2 in there we are using the putty as to access the different AP's now from the primary AP i want to login to several different AP's using a script what the script will do is :- input a text file in which list of different ap's and the corresponding... (0 Replies)
Discussion started by: amiglani
0 Replies

9. UNIX for Dummies Questions & Answers

Help with switching the users

Hello. I am using a instance of Centos 5.5, I currently have two users root and zetaris, but when I try to switch the user from root su zetaris or su - zetaris the next command line shows bash-3.2$ and stops there. Further there is no response from instance. Please help me with this problem. I... (3 Replies)
Discussion started by: nnani
3 Replies

10. Programming

Switching over to C++

Hi, We've been using a perl script to extract datas from several logs to generate a report. I've been asked to rewrite the code in C++. I want to know if it is wise to have a code in C++ and will it be more faster than Perl? (23 Replies)
Discussion started by: Ribosome
23 Replies
KILL(2) 						     Linux Programmer's Manual							   KILL(2)

NAME
kill - send signal to a process SYNOPSIS
#include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); DESCRIPTION
The kill system call can be used to send any signal to any process group or process. If pid is positive, then signal sig is sent to pid. If pid equals 0, then sig is sent to every process in the process group of the current process. If pid equals -1, then sig is sent to every process except for process 1 (init), but see below. If pid is less than -1, then sig is sent to every process in the process group -pid. If sig is 0, then no signal is sent, but error checking is still performed. RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is set appropriately. ERRORS
EINVAL An invalid signal was specified. ESRCH The pid or process group does not exist. Note that an existing process might be a zombie, a process which already committed termi- nation, but has not yet been wait()ed for. EPERM The process does not have permission to send the signal to any of the receiving processes. For a process to have permission to send a signal to process pid it must either have root privileges, or the real or effective user ID of the sending process must equal the real or saved set-user-ID of the receiving process. In the case of SIGCONT it suffices when the sending and receiving processes belong to the same session. NOTES
It is impossible to send a signal to task number one, the init process, for which it has not installed a signal handler. This is done to assure the system is not brought down accidentally. POSIX 1003.1-2001 requires that kill(-1,sig) send sig to all processes that the current process may send signals to, except possibly for some implementation-defined system processes. Linux allows a process to signal itself, but on Linux the call kill(-1,sig) does not signal the current process. LINUX HISTORY
Across different kernel versions, Linux has enforced different rules for the permissions required for an unprivileged process to send a signal to another process. In kernels 1.0 to 1.2.2, a signal could be sent if the effective user ID of the sender matched that of the receiver, or the real user ID of the sender matched that of the receiver. From kernel 1.2.3 until 1.3.77, a signal could be sent if the effective user ID of the sender matched either the real or effective user ID of the receiver. The current rules, which conform to POSIX 1003.1-2001, were adopted in kernel 1.3.78. CONFORMING TO
SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3, POSIX 1003.1-2001 SEE ALSO
_exit(2), exit(3), signal(2), signal(7) Linux 2.5.0 2001-12-18 KILL(2)
All times are GMT -4. The time now is 04:35 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy