Re: sysfs_notify & poll

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
On Wed, Jan 7, 2009 at 4:20 PM, PAtrick Gerber <kpa_info@xxxxxxxx> wrote:> I found some occurences of sysfs_notify in different driver (phidgetkit driver for example).>> As I sayd in my previous post now it's working. I can start poll on my attribute (sysfs file) and when I execute sysfs_notify in my driver the event is handled by poll. But I have still a little probleme, the poll call return POLLPRI and POLLERR. Only POLLPRI is normal I don't understand why we have both ???
Sorry I miss your previous mail. In article which I send you a link ismentioned:user space need only open the attribute of interest pass it to poll()with the POLLERR and POLLPRI events selected. When poll() returns, thefile can be reopened and reread to obtain the new value.
If you look to sysfs_poll it returns POLLERR|POLLPRI. You can't use POLLERR.Godd to hear it's working ;).
>> Any idea ?>>>> --- En date de : Mer 7.1.09, Belisko Marek <marek.belisko@xxxxxxxxx> a écrit :>>> De: Belisko Marek <marek.belisko@xxxxxxxxx>>> Objet: Re: sysfs_notify & poll>> À: kpa_info@xxxxxxxx>> Date: Mercredi 7 Janvier 2009, 15h46>> Hi,>>>> On Wed, Jan 7, 2009 at 3:25 PM, PAtrick Gerber>> <kpa_info@xxxxxxxx> wrote:>> > I am not sure but I had understanded that we need to>> implement the pool syscall, as described in ldd3 books, only>> for chardevices. For attributes in sysfs, the poll syscall>> is managed by the kernel/sysfs and we can simply use>> sysfs_notify on the kernel side. An event queue is managed>> for each attribute for this purprose.>> I think sysfs_notify couldn't be called from>> kobject-example. If you>> search through whole kernel tree>> no occurences only in sysfs/file.c is found.>>>> You can read this article (http://lwn.net/Articles/174660/)>> and try>> what's described.>> If poll returns close file and open again. New value should>> be obtained.>> >>> > But as I say before I am not clear with this. You can>> read this :>> http://lists.linuxcoding.com/kernel/2006-q1/msg28166.html or>> this from the kernel source:>> >>> > /* Sysfs attribute files are pollable.  The idea is>> that you read>> >  * the content and then you use 'poll' or>> 'select' to wait for>> >  * the content to change.  When the content changes>> (assuming the>> >  * manager for the kobject supports notification),>> poll will>> >  * return POLLERR|POLLPRI, and select will return the>> fd whether>> >  * it is waiting for read, write, or exceptions.>> >  * Once poll/select indicates that the value has>> changed, you>> >  * need to close and re-open the file, as simply>> seeking and reading>> >  * again will not get new data, or reset the state of>> 'poll'.>> >  * Reminder: this only works for attributes which>> actively support>> >  * it, and it is not possible to test an attribute>> from userspace>> >  * to see if it supports poll (Nether 'poll'>> or 'select' return>> >  * an appropriate error code).  When in doubt, set a>> suitable timeout value.>> >  */>> >>> >>> > --- En date de : Mer 7.1.09, Belisko Marek>> <marek.belisko@xxxxxxxxx> a écrit :>> >>> >> De: Belisko Marek <marek.belisko@xxxxxxxxx>>> >> Objet: Re: sysfs_notify & poll>> >> À: "PAtrick Gerber">> <kpa_info@xxxxxxxx>>> >> Cc: kernelnewbies@xxxxxxxxxxxx>> >> Date: Mercredi 7 Janvier 2009, 15h09>> >> Hi,>> >>>> >> On Wed, Jan 7, 2009 at 2:21 PM, PAtrick Gerber>> >> <kpa_info@xxxxxxxx> wrote:>> >> > Thanks for the information.>> >> >>> >> > I have tested with the example from>> >> http://linux.die.net/man/3/poll slightly modified>> (see the>> >> attached file).>> >> > If I test pool on the>> >> "/sys/module/systest/sections/.data">> file it seems>> >> to work fine. But if I try the same test>> application with my>> >> attribute (/sys/kernel/kobject_example/bar)>> created with the>> >> example from linux sources>> >> (samples/kobject/kobject_example.c) the result is>> an event>> >> POLLERR.>> >>>> >> >>> >> > Do you have any idea why ? Need I to add>> special code>> >> for support poll syscall in my driver ?>> >> Of course you should implement poll syscall in>> kernel>> >> driver. But for>> >> kobject-example it could be a problem>> >> because you don't have a file operations in>> this>> >> example. But thats>> >> only my feeling ;)>> >> Example for poll : (ldd3>> >> http://lwn.net/images/pdf/LDD3/ch06.pdf )>> >> >>> >> > Thanks in advance>> >> >>> >> > --- En date de : Mer 7.1.09, Belisko Marek>> >> <marek.belisko@xxxxxxxxx> a écrit :>> >> >>> >> >> De: Belisko Marek>> <marek.belisko@xxxxxxxxx>>> >> >> Objet: Re: sysfs_notify & poll>> >> >> À: "PAtrick Gerber">> >> <kpa_info@xxxxxxxx>>> >> >> Date: Mercredi 7 Janvier 2009, 13h59>> >> >> Hi,>> >> >>>> >> >> On Wed, Jan 7, 2009 at 1:54 PM, PAtrick>> Gerber>> >> >> <kpa_info@xxxxxxxx> wrote:>> >> >> > Ok thanks. Usefull example. But I>> have>> >> another>> >> >> question:>> >> >> >>> >> >> > Need I to use poll or epoll ? I dont>> really>> >> understand>> >> >> the difference.>> >> >> epoll is a variant of poll that can be>> used either>> >> as Edge>> >> >> or Level>> >> >> Triggered interface and scales well to>> large>> >> numbers of>> >> >> watched fds.>> >> >> For beginnig you can use normal poll>> syscall.>> >> >>>> >> >> >>> >> >> > Thanks in advance for any help !>> >> >> >>> >> >> > On Wed, Jan 7, 2009 at 9:40 AM,>> PAtrick>> >> Gerber>> >> >> <kpa_info@xxxxxxxx> wrote:>> >> >> >> Hello,>> >> >> >>>> >> >> >> I would like to try to use>> sysfs_notify()>> >> / poll()>> >> >> mechanism from my>> >> >> > driver>> >> >> >> to notify some events to my>> application.>> >> I'm>> >> >> looking for a tiny>> >> >> > example>> >> >> >> showing the use of this>> mechanism.>> >> >> >>>> >> >> >> The driver side with>> sysfs_notify seems>> >> quite>> >> >> simple but I have absolutely>> >> >> >> no idea about the application>> side.>> >> >> >>> >> >> > Fo poll method you canfind good>> description>> >> and also>> >> >> example at:>> >> >> > http://linux.die.net/man/3/poll>> >> >> >>> >> >> >>>> >> >> >> Thanks in advance>> >> >> >>>> >> >> >> Patrick>> >> >> >>>> >> >> >>> >> >> > thanks,>> >> >> >>> >> >> > Marek>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >>>> >> >> thanks,>> >> >>>> >> >> Marek>> >> >>>> >> >> -->> >> >> as simple as primitive as possible>> >> >>>> ---------------------------------------------->> >> >> Marek Beliško - open-nandra>> >> >> Ruská Nová Ves 219>> >> >> 08005 Prešov>> >> >> Slovakia>> >> >> http://open-nandra.com>> >> >>> >> >>> >> >>> >>>> >> thanks,>> >>>> >> Marek>> >>>> >> -->> >> as simple as primitive as possible>> >> ---------------------------------------------->> >> Marek Beliško - open-nandra>> >> Ruská Nová Ves 219>> >> 08005 Prešov>> >> Slovakia>> >> http://open-nandra.com>> >>> >>> >>> >>>>> thanks,>>>> Marek>>>>>> -->> as simple as primitive as possible>> ---------------------------------------------->> Marek Beliško - open-nandra>> Ruská Nová Ves 219>> 08005 Prešov>> Slovakia>> http://open-nandra.com>>>>

Marek-- as simple as primitive as possible----------------------------------------------Marek Beliško - open-nandraRuská Nová Ves 21908005 PrešovSlovakiahttp://open-nandra.com��.n��������+%����w�j)p���{.n����z�ޖw�n'���q���b�������v��m�����Y�����


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux