static int helloOpen(struct inode *inode, struct file *file) {
printk(KERN_DEBUG "hello2 open()\n");
return 0;
}
Il y a aussi dans le init (avec major à 0)
ret = register_chrdev(major,HELLO_DEV_NAME,&hello_ops);
printk(KERN_ALERT "MAJOR HELLO2= %d\n",ret);
Je retrouve dans le dmesg le majeur puis je crée mon /dev/my_test : mknod /dev/my_test c 254 0
Si j'essaye de lire /dev/my_test avec cat pas de problème.
Si avec mon programme j'essaye de lire /dev/zero par exemple il fonctionne. mais pas /dev/my_test
J'ai regardé avec valgrind , pas de problème sur mon programme.
Voici un programme de test minimal qui plante :
int main(int argc, char * argv[])
{
int fbdesc;
[^] # Re: Plus de contexte
Posté par shal . En réponse au message Comportement étrange de l'ouverture d'un device. Évalué à 1.
static struct file_operations hello_ops= {
.read = helloRead,
.write = helloWrite,
.open = helloOpen,
.release = helloRelease
};
Avec :
static int helloOpen(struct inode *inode, struct file *file) {
printk(KERN_DEBUG "hello2 open()\n");
return 0;
}
Il y a aussi dans le init (avec major à 0)
ret = register_chrdev(major,HELLO_DEV_NAME,&hello_ops);
printk(KERN_ALERT "MAJOR HELLO2= %d\n",ret);
Je retrouve dans le dmesg le majeur puis je crée mon /dev/my_test : mknod /dev/my_test c 254 0
Si j'essaye de lire /dev/my_test avec cat pas de problème.
Si avec mon programme j'essaye de lire /dev/zero par exemple il fonctionne. mais pas /dev/my_test
J'ai regardé avec valgrind , pas de problème sur mon programme.
Voici un programme de test minimal qui plante :
int main(int argc, char * argv[])
{
int fbdesc;
fbdesc = open("/dev/oco-out", O_RDONLY|O_LARGEFILE );
if(fbdesc == -1)
{
perror("open fb");
exit(-1);
}
close(fbdesc);
exit(0);
}
compilé avec -g -D_GNU_SOURCE -Wall