Re: Re: Kernel module: return a number from a device
- Reply: Warner Losh : "Re: Re: Kernel module: return a number from a device"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 06 Apr 2024 21:00:20 UTC
On apr 06 14:39, Warner Losh wrote:
> When this happens, hit ^t (control t). That will give a traceback of the
> call stack which may help you track down where it is hanging (most likely
> something is sleeping waiting for an event).
Thanks! It seems that cat itself is hanging (so, uiomove can still be
the
culprit...):
$ cat rolld
Opened device "rolld" successfully.
load: 0.44 cmd: cat 13392 [running] 7.67r 1.25u 6.39s 38% 1936k
I also tried to modify rolld_read using only char variables:
static int
rolld_read(struct cdev *dev __unused, struct uio *uio, int ioflag
__unused)
{
char random_out;
char random_item;
int error;
random_item = (char) arc4random();
random_out = random_item % d_size;
if ((error = uiomove(&random_out, 1, uio)) != 0)
uprintf("uiomove failed!\n");
return (error);
}
But nothing changed with respect to the first version.
Rocky