[linux] Met inotify het /sys-filesystemen watchen

Pagina: 1
Acties:

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 14:14

LauPro

Prof Mierenneuke®

Topicstarter
Met een daemon wil ik controlleren of er een wijziging is opgetreden in het /sys-filesystem. Er wordt namelijk via een kernel driver een aantal waardes telkens geüpdate.

Nu dacht ik dit met inotify te doen. Echter ik heb gemerkt dat wanneer de kernelmodule de waarde bij werkt er bij inotify geen IN_MODIFY-event wordt getriggerd :? .

De volgende relevante code: Het toevoegen van een watch:
C++:
1
wd = inotify_add_watch(fd,"/sys/bus/usb/drivers/k8055_drv/5-2:1.0/digital_in",IN_ALL_EVENTS);


Echter nu moet ik natuurlijk in de kernel-module aangeven dat de waarde is gewijzigd. Heeft iemand een idee hoe je een /sys-entry als 'gewijzigd' kan markeren? Zodat je dat dus af kan vangen met inotify in de userspace daemon?

[ Voor 3% gewijzigd door LauPro op 06-12-2005 17:03 ]

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
inotify is inode-based en het /sys systeem niet, als ik even zoek.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • igmar
  • Registratie: April 2000
  • Laatst online: 20-04 22:06

igmar

ISO20022

LauPro schreef op dinsdag 06 december 2005 @ 17:03:
Met een daemon wil ik controlleren of er een wijziging is opgetreden in het /sys-filesystem. Er wordt namelijk via een kernel driver een aantal waardes telkens geüpdate.

Nu dacht ik dit met inotify te doen. Echter ik heb gemerkt dat wanneer de kernelmodule de waarde bij werkt er bij inotify geen IN_MODIFY-event wordt getriggerd :? .
Het bijwerken is geen filesystem operatie, waarop inotify is gebaseerd.
Echter nu moet ik natuurlijk in de kernel-module aangeven dat de waarde is gewijzigd. Heeft iemand een idee hoe je een /sys-entry als 'gewijzigd' kan markeren? Zodat je dat dus af kan vangen met inotify in de userspace daemon?
Niet, aangezien het geen normaal FS is. Misschien dat het mogelijk is, maar de modify info ed. wordt niet bijgehouden voor /sys zover ik kan zien.

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 14:14

LauPro

Prof Mierenneuke®

Topicstarter
/sys is wel gewoon een filesystem. Maar om het nu als niet 'normaal' af te schrijven vind ik een beetje discriminatie :| .

In ieder geval heb ik de volgende functie gevonden:
C:
1
int sysfs_update_file(struct kobject * kobj, const struct attribute * attr)
Dit is een API van de kernel. Echter als ik die aan roep vanuit de module krijg ik ENOENT terug :? (file not found).
C:
1
sysfs_update_file(&k8055->udev->dev->kobj,&(&dev_attr_digital_in)->attr);
Bovenstaande klopt niet geheel qua referencies, ik ben min of meer vastgelopen nu :/ .

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!