On Wed, 14 Mar 2007, Oliver Neukum wrote: > Hi, > > I am looking at this code: > > if (new_msr & > (MOS_MSR_DELTA_CTS | MOS_MSR_DELTA_DSR | MOS_MSR_DELTA_RI | > MOS_MSR_DELTA_CD)) { > icount = &mos7840_port->icount; > > /* update input line counters */ > if (new_msr & MOS_MSR_DELTA_CTS) { > icount->cts++; > } > if (new_msr & MOS_MSR_DELTA_DSR) { > icount->dsr++; > } > if (new_msr & MOS_MSR_DELTA_CD) { > icount->dcd++; > } > if (new_msr & MOS_MSR_DELTA_RI) { > icount->rng++; > } > } > > It is called in interrupt and uses no locking. What happens if the next > irq is processed on another cpu? Is that cpu guaranteed to see the updates > to the incremented variables?
I _think_ it's okay. Taking an interrupt and returning from an interrupt ought to have explicit or implicit memory barriers. It wouldn't hurt to ask someone else. David Howells wrote Documentation/memory-barriers.txt so maybe he knows. (The document itself doesn't say one way or the other.) Alan Stern ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel