Date: Fri, 31 Aug 2007 18:52:01 -0400 From: Joe Marcus Clarke <marcus@FreeBSD.org> To: freebsd-arch@FreeBSD.org Subject: Understanding interrupted system calls Message-ID: <1188600721.1255.11.camel@shumai.marcuscom.com>
next in thread | raw e-mail | index | archive | help
--=-5VC5dfdhhdL4pmUdMfXX Content-Type: text/plain Content-Transfer-Encoding: quoted-printable In my attempts to debug the problems with ConsoleKit and the VT_WAITACTIVE ioctl, I delved into the tsleep/msleep code, and I think I have a pretty good idea when it returns EINTR vs. ERESTART. However, I'm curious as to why I have to do something like the following to allow a process waiting in tsleep() to die when it receives a termination signal (e.g. SIGTERM or SIGINT): struct sigaction sa; sa.sa_handler =3D SIG_DFL; ... sigaction (SIGTERM, &sa, NULL); Shouldn't the ps_sigintr set be initialized to the default set of termination signals by default (e.g. in init_main.c proc0_init())? That is, shouldn't the list of signals whose default action is to terminate the process (according to signal(3)) be allowed to interrupt a system call by default? If one then wants to restart the syscall, they can explicitly do: struct sigaction sa; sa.sa_flags =3D SA_RESTART; ... sigaction (SIGTERM, &sa, NULL); I'm just trying to get a better handle on why terminating a program that is running the VT_WAITACTIVE ioctl leaves an unkillable process on FreeBSD, but apparently just causes the program to terminate on Linux. Joe --=20 Joe Marcus Clarke FreeBSD GNOME Team :: gnome@FreeBSD.org FreeNode / #freebsd-gnome http://www.FreeBSD.org/gnome --=-5VC5dfdhhdL4pmUdMfXX Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) iD8DBQBG2JuLb2iPiv4Uz4cRAuAMAJ90Mx4EM5avJpf8l39v3lD6qLGGEgCgkVas F7UWS+dPX84jJeec94h2hFU= =TFHe -----END PGP SIGNATURE----- --=-5VC5dfdhhdL4pmUdMfXX--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1188600721.1255.11.camel>