On Mon, 2008-04-07 at 13:08 -0700, Roland McGrath wrote:True. But see below. This is one thing that has been unclear. The relationship of signal_struct to task_struct is, as far as I can tell, an unwritten one. Certainly the interrupt routines are adjusting values that live only inside task_struct and (with the exception of run_posix_cpu_timers()) leave signal_struct carefully alone. While true, that's not the only reason to do it. The tradeoff here is between performance (i.e. having to do checks before dereferencing tsk->signal) versus space. It's really a judgment call. (Although adding 100Kwords does have a bit of weight.) Well, yes. And not just "seems." This isn't exactly how I would state it but yes, this is generally true as well. The problem is that knowing exactly what is "the wrong kinds" relies on knowledge possessed by only a few. Prying that knowledge out of you guys can be a chore. :-) Well, okay, this is the vital bit of data that puts everything above into perspective. Had I known this, I would not have made the change I did. I guess the key bit of knowledge is that a "task" is really a scheduling unit, right? And, really, from the scheduler's perspective, "task" is the same as "thread." The only thing that makes a set of threads into a multithreaded process is that they share a signal struct (well, and their memory map, of course). So a "task" can only be executed on a single cpu at any time, it can't be executed on more than one cpu at a time. Therefore if a "task" is executing and is interrupted, the value of "current" at the interrupt will be that task, which is entirely suspended for the duration of the interrupt. Is this correct? (This is not just for this fix, but for my general understanding of Linux scheduling.) Unfortunately, these things are often implicit in the code but as far as I know aren't written down anywhere. This whole exercise has been for me a process of becoming really familiar with the internals of the Linux kernel for the first time. -- Frank Mayhar <fmayhar@google.com> Google, Inc. --
| Chuck Ebbert | Wanted: simple, safe x86 stack overflow detection |
| Alan Cox | Re: ndiswrapper and GPL-only symbols redux |
| Yinghai Lu | [PATCH 03/42] x86: remove irq_vectors_limits |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
git: | |
| しらいしななこ | Re: [ANNOUNCE] GIT 1.5.4 |
| Jan Wielemaker | git filter-branch --subdirectory-filter, still a mistery |
| Pierre Habouzit | [PATCH] guilt(1): Obvious bashisms fixed. |
| Christopher Faylor | Re: First cut at git port to Cygwin |
| Thilo Pfennig | OpenBSD project goals |
| Marco Peereboom | Re: Real men don't attack straw men |
| Daniel Hazelton | Re: Wasting our Freedom |
| Luke Bakken | Re: No Blob without Puffy |
| Julius Volz | [PATCHv3 19/24] IVPS: Disable sync daemon for IPv6 connections |
| Paul Moore | [RFC PATCH v4 04/14] selinux: Fix missing calls to netlbl_skbuff_err() |
| Dave Jones | odd RTL8139 quirk. |
| Patrick McHardy | [NET_SCHED 04/15]: act_api: use nlmsg_parse |
