Re: [PATCH v8 18/22] docs: counter: Document character device interface
From: Pavel Machek <hidden>
Date: 2021-02-22 10:14:35
Also in:
linux-iio, lkml
Hi!
quoted
+* COUNTER_ENABLE_EVENTS_IOCTL: + Enables monitoring the events specified by the Counter watches that + were queued by ``COUNTER_ADD_WATCH_IOCTL``. If events are already + enabled, the new set of watches replaces the old one. Calling this + ioctl also has the effect of clearing the queue of watches added by + ``COUNTER_ADD_WATCH_IOCTL``. + +* COUNTER_DISABLE_EVENTS_IOCTL: + Stops monitoring the previously enabled events.Is there a way to remove a watch?
Is there a way to eat all kernel memory and crash the system by adding too many watches?
quoted
+For example, the following userspace code opens ``/dev/counter0``, +configures the ``COUNTER_EVENT_INDEX`` event channel 0 to gather Count 0 +and Count 1, and prints out the data as it becomes available on the +character device node:: +Consider adding an example program under tools/quoted
+ #include <fcntl.h> + #include <linux/counter.h> + #include <stdio.h> + #include <string.h> + #include <sys/ioctl.h> + #include <unistd.h> + + struct counter_watch watches[2] = { + { + .component.type = COUNTER_COMPONENT_COUNT, + .component.scope = COUNTER_SCOPE_COUNT, + .component.parent = 0,Good to add comments on what these elements actually are?
quoted
+ fd = open("/dev/counter0", O_RDWR); + + ioctl(fd, COUNTER_ADD_WATCH_IOCTL, watches); + ioctl(fd, COUNTER_ADD_WATCH_IOCTL, watches + 1); + ioctl(fd, COUNTER_ENABLE_EVENTS_IOCTL);
quoted
+ for (;;) { + read(fd, event_data, sizeof(event_data));
If this goes to tools it really should have error handling and handling of short read. Best regards, Pavel -- http://www.livejournal.com/~pavelmachek