kobject sample code

Paul Bolle pebolle at tiscali.nl
Wed Dec 17 16:31:21 EST 2014


On Sat, 2014-12-13 at 13:01 -0500, John de la Garza wrote:
> On Tue, Dec 09, 2014 at 10:26:03AM +0100, Paul Bolle wrote:
> > On Mon, 2014-12-08 at 21:20 -0500, John de la Garza wrote:
> > > I'm looking at samples/kobject/kobject-example.c
> > > 
> > > at line 39 foo is read:
> > > 
> > >         sscanf(buf, "%du", &foo);
> > > 
> > > foo is an int so why is it read using %du not %d?
> > 
> > My reading of lib/vsprintf.c:vsscanf() is that a "%du" format expects
> > "buf" to contain an integer followed by a literal 'u' char. Is that your
> > reading too?
> > 
> After reading the code and the man page for vsscanf, it seems like
> it is not expecting the 'u', but rather ignores it.

The manpage _probably_ describes intended behavior. But I'm not sure
whether the kernel's vsscanf() tries to emulate it all that faithfully.
(And, besides, that manpage would gain quite a bit with a few examples.)
Anyhow, the net effect of "%du" appears to be to ignore any non digit
trailing input. So I think you're reading the code correctly.

> vsscanf is a bit complicated for me, so I may be missing something.

I wouldn't have bothered replying if I had not noticed
https://lkml.org/lkml/2014/12/17/386 . You might like to have a look at
that patch. My primary observation is that its commit explanation is not
very helpful. (That's why I CC-ed Ratislav.)


Paul Bolle




More information about the Kernelnewbies mailing list