public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: wdebruij@dds.nl
To: sting sting <zstingx@hotmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Example Code Was : Re: Re : Re: printk and long long
Date: Wed, 11 Feb 2004 15:57:25 +0100	[thread overview]
Message-ID: <1076511445.402a42d5c6ff9@webmail.dds.nl> (raw)
In-Reply-To: <Sea2-F294mt5UJoched000331f3@hotmail.com>

> 
> Well I had tried it but I got
> the follwing compilation errors while trying to add that code:
> invalid operands to binary >>
> invalid operands to binary <<

I just ran the following on my computer :

"
#define LLHIGH(n) (unsigned long) (n >> (8 * sizeof(long)))
#define LLLOW(n) (unsigned long) ((n << (8 * sizeof(long)))  >> (8 * sizeof(long)))
/** internal function: called from the template module's init function */
int myfunc(void){

	unsigned long long int ullint = ((unsigned long long int) 1 << 32) - 1; //
LONG_MAX returns 7fffffff, this at least is a max_long
	unsigned long int ulint = ((unsigned long long int) 1 << 32) - 1;
	printk("a long long consists of %d bits on an x86 (athlon-xp), whereas a long
consists of %d bits\n", sizeof(ullint) * 8, sizeof(long) * 8);
	printk("my test long long reads %.8lx%.8lx; my test long %.8lx\n",
LLHIGH(ullint), LLLOW(ullint), ulint );
	ullint += 1; // will we get overflow or is a long long really > long?
	ulint += 1;
	printk("my test long long now reads %.8lx%.8lx; my test long %.8lx\n",
LLHIGH(ullint), LLLOW(ullint), ulint );

"

"
a long long consists of 64 bits on an x86 (athlon-xp), whereas a long consists
of 32 bits
my test long reads 00000000ffffffff; my test long ffffffff
my test long reads 0000000100000000; my test long 00000000
"

It took a bit longer to get right than I imagined (doesn't it always ;), but at
least here you've got a working example. Enjoy.

cheers,

  Willem
> 
> I assume maybe it is a problems with the flags I use:
> I use gcc 3.2.2 and the flags are:
> O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common
> -DMODULE -D__KERNEL__ -DNOKERNEL

to the best of my knowledge it has nothing to do with this.


      reply	other threads:[~2004-02-11 14:57 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-11 14:08 Re : Re: printk and long long sting sting
2004-02-11 14:57 ` wdebruij [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1076511445.402a42d5c6ff9@webmail.dds.nl \
    --to=wdebruij@dds.nl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=zstingx@hotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox