* [Linux-ia64] Port of the posix timers to IA64
@ 2003-02-28 9:52 Eric Piel
2003-02-28 12:41 ` Andreas Schwab
0 siblings, 1 reply; 2+ messages in thread
From: Eric Piel @ 2003-02-28 9:52 UTC (permalink / raw)
To: linux-ia64
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.
So, first, do you think it's a bug in gcc? Second should I convert every
1's I see by 1UL's (there are only few but sounds so strange)?
Thanks
Eric
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Linux-ia64] Port of the posix timers to IA64
2003-02-28 9:52 [Linux-ia64] Port of the posix timers to IA64 Eric Piel
@ 2003-02-28 12:41 ` Andreas Schwab
0 siblings, 0 replies; 2+ messages in thread
From: Andreas Schwab @ 2003-02-28 12:41 UTC (permalink / raw)
To: linux-ia64
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."
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-02-28 12:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-02-28 9:52 [Linux-ia64] Port of the posix timers to IA64 Eric Piel
2003-02-28 12:41 ` Andreas Schwab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox