This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Does the keyword volatile work?


Ok, I did what I thought you told me to do, and it didn't work. assignThisNow isn't getting set right away.


258:../../code/ipc/ipck.cpp **** DWORD CDECL someFunction( DWORD, DWORD p1, DWORD, DWORD, DWORD, DWORD)
259:../../code/ipc/ipck.cpp **** {
433 .LM1:
434 0000 55 pushl %ebp
435 0001 89E5 movl %esp, %ebp
436 0003 56 pushl %esi
437 0004 53 pushl %ebx
260:../../code/ipc/ipck.cpp **** volatile DWORD assignThisNow = *(volatile DWORD *)&p1;
261:../../code/ipc/ipck.cpp **** NumericNameTYP threadName = (NumericNameTYP) assignThisNow;
262:../../code/ipc/ipck.cpp **** DWORD periodIndex = 0;
439 .LM2:
440 .LBB2:
441 0005 31F6 xorl %esi, %esi



Fergus Henderson wrote:


On 12-May-2003, Stephen P. Smith <ischis2@cox.net> wrote:


In the code fragment below which was produced with a 3.3 version of the gcc compiler,
why isn't the variable p1 assigned to mailboxHandle immediately? I believe that the
keyword volatile should cause that to happen.



Firstly, I would suggest using `*(volatile DWORD *)&p1' rather than `(volatile DWORD)p1'.

Secondly, if you want to be sure that the value will be assigned to
the target variable immediately, you need to declare the target
variable as volatile.





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]