Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | "Rod Pemberton" <do_not_have@noavailemail.cmm> |
|---|---|
| Newsgroups | comp.lang.c, alt.os.development |
| Subject | Re: Exception propagation in C |
| Date | 2012-01-02 15:59 -0500 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <jdt5n7$7ro$1@speranza.aioe.org> (permalink) |
| References | (2 earlier) <541969d7-e4ab-43ba-8cf5-679f18eb3221@m4g2000vbc.googlegroups.com> <jdmpfp$kf1$1@speranza.aioe.org> <6c6a43c1-53d3-4386-a156-542d0ac75eb4@p42g2000vbt.googlegroups.com> <jdrk0l$i28$1@speranza.aioe.org> <slrnjg2p6e.dqm.scott@snotra.buserror.net> |
Cross-posted to 2 groups.
"Scott Wood" <scott@buserror.net> wrote in message news:slrnjg2p6e.dqm.scott@snotra.buserror.net... > On 2012-01-02, Rod Pemberton <do_not_have@noavailemail.cmm> wrote: > > "James Harris" <james.harris.1@googlemail.com> wrote in message > > news:6c6a43c1-53d3-4386-a156-542d0ac75eb4@p42g2000vbt.googlegroups.com... > >> On Dec 31 2011, 10:53 am, "Rod Pemberton" > >> <do_not_h...@noavailemail.cmm> wrote: > >> > "James Harris" <james.harri...@googlemail.com> wrote in message > > ... > >> > Are these x86 exceptions or x86 interrupts or events external to C, > >> > e.g., for your OS, that are being passed to C via a machine word? > >> > I suspect they are, but you probably wanted to keep things topical > >> > for c.l.c. ... > >> > >> This fully applies to C (or another language for that matter). The > >> machine word is one that could be set, altered and cleared all in the > >> language or in a called module whether in the same language or not. > >> That said, it could just as easily be modified by the OS or something > >> else. Perhaps you could think of it and the operations as a protocol. > >> Whatever raises an exception that it doesn't handle itself sets the > >> word and returns to its caller. Whatever does handle outstanding > >> exceptions clears the word. And the word is checked whenever > >> appropriate. > > > > Ok, that screams "volatile" keyword to me. Anything modified outside of > > C and used by C is unknown to C so needs a volatile so it's not > > optimized away or to ensure it's reloaded from memory instead of being > > cached in a register since it's value could changed by non-C code ... > > The relevant factor isn't "C" versus "non-C", Sorry, "non-C" is inaccurate. I think of C as "a single-threaded execution model." By that, I mean there is no other C code executing in parallel, even though that's *not* the correct definition for single-threaded. Obviously, there could be C code executing in parallel with each modifying the same machine word. So, "non-C" should be "everything other than" the C code deemed to be active. > The relevant factor is [...] synchronous versus asynchronous [...] I don't see this as being relevant. His C code could be 100% synchronous and he could still need a volatile. His code could be single-threaded, single-core, single-processor, serial, non-parallel, not use setjmp/longjmp, and be entirely interrupt free. If hardware modifies his machine word that his C code is accessing, he still needs a volatile keyword for it. AFAICT, James never fully stated what exactly is modifying his machine word. It could be other software - in C or in assembly. Or, it could be hardware. From his description, all I know is that it's "in the cloud" somewhere ... I.e., it might not even be on his own computer. Maybe it's only accessable from a another computer by a remote procedure call over a network. Without knowing exactly what is modifying his machine word, I'm not sure how he is going to guarantee non-volatility and/or atomicity. > (or perhaps, outside this instance of the single-threaded C > execution model). > Yes. Or, I like that better, although technically neither of us is being precise enough. I'm not entirely sure of the correct terminology. Single-threaded doesn't specifically exclude parallel processing for the single-thread. Single-threaded just means a single command. E.g., one or more parts of a single-threaded and in parallel C application could optimize away use of the variable because it's unaware of the other parts' usage of it. > If it's modified by code during what the C code sees as an ABI-conformant > function call (which seems to be the case here -- I don't think he was > talking about recovering from hardware exceptions), it doesn't matter what > language the function is implemented in, as long as it is indeed > ABI-conformant -- volatile is not needed. ... > OTOH, if the variable is modified from an interrupt/signal handler, > another thread, etc. you'll need (at a minimum) either volatile or some > implementation-specific optimization barrier, even if the code that > actually modifies the variable is also written in C. > Yes. Rod Pemberton
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2011-12-29 09:52 -0800
Re: Exception propagation in C jacob navia <jacob@spamsink.net> - 2011-12-29 19:40 +0100
Re: Exception propagation in C BGB <cr88192@hotmail.com> - 2011-12-29 14:03 -0600
Re: Exception propagation in C BGB <cr88192@hotmail.com> - 2011-12-29 13:07 -0600
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2011-12-30 13:38 -0800
Re: Exception propagation in C BGB <cr88192@hotmail.com> - 2011-12-30 20:24 -0600
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-03 02:19 -0800
Re: Exception propagation in C BGB <cr88192@hotmail.com> - 2012-01-03 14:04 -0600
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-04 04:26 -0800
Re: Exception propagation in C BGB <cr88192@hotmail.com> - 2012-01-06 14:05 -0600
Re: Exception propagation in C jacob navia <jacob@spamsink.net> - 2012-01-06 23:54 +0100
Re: Exception propagation in C "Ed Coran" <sysdev@new.net> - 2012-01-06 22:24 -0600
Re: Exception propagation in C jacob navia <jacob@spamsink.net> - 2012-01-07 09:15 +0100
Re: Exception propagation in C "Ed Coran" <sysdev@new.net> - 2012-01-08 23:45 -0600
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-08 12:52 -0800
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-08 14:20 -0800
Re: Exception propagation in C jacob navia <jacob@spamsink.net> - 2012-01-09 00:19 +0100
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-08 21:12 -0800
Re: Exception propagation in C Scott Wood <scott@buserror.net> - 2012-01-08 23:41 -0600
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-09 11:00 -0800
Re: Exception propagation in C Scott Wood <scott@buserror.net> - 2012-01-10 00:42 -0600
Re: Exception propagation in C jgk@panix.com (Joe keane) - 2012-01-11 07:40 +0000
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-11 12:59 -0800
Re: Exception propagation in C "Ed Coran" <sysdev@new.net> - 2012-01-09 00:05 -0600
Re: Exception propagation in C Ian Collins <ian-news@hotmail.com> - 2012-01-09 20:40 +1300
Re: Exception propagation in C "Ed Coran" <sysdev@new.net> - 2012-01-09 04:53 -0600
Re: Exception propagation in C 88888 Dihedral <dihedral88888@googlemail.com> - 2012-01-09 05:49 -0800
Re: Exception propagation in C Scott Wood <scott@buserror.net> - 2012-01-08 17:29 -0600
Re: Exception propagation in C jacob navia <jacob@spamsink.net> - 2012-01-09 00:37 +0100
Re: Exception propagation in C Nomen Nescio <nobody@dizum.com> - 2012-01-09 11:36 +0100
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-09 11:08 -0800
Re: Exception propagation in C Scott Wood <scott@buserror.net> - 2012-01-05 01:25 -0600
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-05 09:18 -0800
Re: Exception propagation in C "s_dubrovich@yahoo.com" <s_dubrovich@yahoo.com> - 2011-12-30 21:20 -0800
Re: Exception propagation in C "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-12-31 06:19 -0500
Re: Exception propagation in C Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-01 10:32 -0800
Re: Exception propagation in C "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-12-31 05:53 -0500
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-01 16:30 -0800
Re: Exception propagation in C "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2012-01-02 01:50 -0500
Re: Exception propagation in C Scott Wood <scott@buserror.net> - 2012-01-02 02:03 -0600
Re: Exception propagation in C "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2012-01-02 15:59 -0500
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-03 04:12 -0800
Re: Exception propagation in C Scott Wood <scott@buserror.net> - 2012-01-04 23:53 -0600
Re: Exception propagation in C "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2012-01-05 06:45 -0500
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-03 04:16 -0800
Re: Exception propagation in C Keith Thompson <kst-u@mib.org> - 2012-01-03 11:50 -0800
Re: Exception propagation in C Jens Gustedt <jens.gustedt@loria.fr> - 2011-12-31 13:40 +0100
Re: Exception propagation in C BGB <cr88192@hotmail.com> - 2011-12-31 10:40 -0600
Re: Exception propagation in C Jens Gustedt <jens.gustedt@loria.fr> - 2012-01-02 16:49 +0100
Re: Exception propagation in C BGB <cr88192@hotmail.com> - 2012-01-02 13:02 -0600
Re: Exception propagation in C Dr Nick <3-nospam@temporary-address.org.uk> - 2012-01-02 19:53 +0000
Re: Exception propagation in C ImpalerCore <jadill33@gmail.com> - 2012-01-02 13:10 -0800
Re: Exception propagation in C ImpalerCore <jadill33@gmail.com> - 2012-01-02 12:58 -0800
Re: Exception propagation in C Jens Gustedt <jens.gustedt@loria.fr> - 2012-01-04 18:01 +0100
Re: Exception propagation in C BGB <cr88192@hotmail.com> - 2012-01-06 14:38 -0600
Re: Exception propagation in C "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2012-01-06 21:40 -0500
Re: Exception propagation in C Kaz Kylheku <kaz@kylheku.com> - 2011-12-29 21:02 +0000
Re: Exception propagation in C jacob navia <jacob@spamsink.net> - 2011-12-30 10:38 +0100
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2011-12-30 14:38 -0800
Re: Exception propagation in C "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-12-29 18:37 -0500
Re: Exception propagation in C "BartC" <bc@freeuk.com> - 2011-12-30 01:07 +0000
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2011-12-30 14:07 -0800
Re: Exception propagation in C Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-12-30 17:53 -0500
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-03 03:56 -0800
Re: Exception propagation in C jgk@panix.com (Joe keane) - 2012-01-02 09:49 +0000
Re: Exception propagation in C Kleuske <kleuske@nowhere.net> - 2012-01-02 10:51 +0000
Re: Exception propagation in C "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2012-01-02 16:01 -0500
Re: Exception propagation in C Kleuske <kleuske@nowhere.net> - 2012-01-03 11:14 +0000
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-01-03 03:59 -0800
Re: Exception propagation in C Kleuske <kleuske@nowhere.net> - 2012-01-03 12:09 +0000
Re: Exception propagation in C jgk@panix.com (Joe keane) - 2012-01-03 21:25 +0000
Re: Exception propagation in C James Harris <james.harris.1@googlemail.com> - 2012-02-15 14:24 -0800
Re: Exception propagation in C jgk@panix.com (Joe keane) - 2012-02-17 22:38 +0000
csiph-web