Re: [Linux-ia64] Port of the posix timers to IA64

From: Andreas Schwab <schwab_at_suse.de>
Date: 2003-02-28 23:41:52
Eric Piel <Eric.Piel@Bull.Net> writes:

|> Hello David,
|> 
|> I'm working on the port of the posix timers to IA64. The first (over 4)
|> part has just been integrated in the linus tree (2.5.63) so I think you
|> can find interest in my work. 
|> Even if it's supposed to be portable accross platforms, due to some mix
|> between long and int, it doesn't run correctly on IA64. 
|> 
|> Here comes my question, I'm still newbie to kernel hacking and IA64
|> compilation and I don't know how I should handle some troubles with
|> longs. In the code I have some cases like this one:
|> 
|> long v;
|> :
|> :
|> if ( v >= (1 << 56)){
|> :
|> }
|> 
|> It seems very strange for me that when compiling this part gcc considers
|> that eveything must be converted to int. I have to write 1UL instead of
|> 1 in order to obtain the correct behaviour of the code. I guess you've
|> already come along with such problem.

That's how C is working.  A type of an expression is determined
independent of the context, so the type of 1 is always int.  And shifting
by more than the width of the type is an undefined operation.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
Received on Fri Feb 28 04:41:58 2003

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:12 EST