greybus: loopback: add poll support to the iteration_count sysfs file
authorGreg Kroah-Hartman <gregkh@google.com>
Wed, 22 Jul 2015 18:09:23 +0000 (11:09 -0700)
committerGreg Kroah-Hartman <gregkh@google.com>
Fri, 24 Jul 2015 23:14:43 +0000 (16:14 -0700)
This adds the ability to poll on "iteration_count" in sysfs and be woken
up when it changes, saving some cycles constantly hammering on the file
waiting for it to change.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
drivers/staging/greybus/loopback.c

index 50eacd1e11a35e8d30f5563f6bf8a8d1b294ada6..08f0bee198c2aba2ef6b848c97a108e778420d23 100644 (file)
@@ -141,7 +141,6 @@ gb_loopback_stats_attrs(throughput);
 gb_loopback_ro_attr(error, d);
 /* The current index of the for (i = 0; i < iteration_max; i++) loop */
 gb_loopback_ro_attr(iteration_count, u);
-/* TODO iteration_count might be better with the KOBJ_CHANGE event */
 
 /*
  * Type of loopback message to send based on protocol type definitions
@@ -406,6 +405,8 @@ static int gb_loopback_fn(void *data)
                if (gb->iteration_max) {
                        if (gb->iteration_count < gb->iteration_max) {
                                gb->iteration_count++;
+                               sysfs_notify(&gb->connection->dev.kobj, NULL,
+                                            "iteration_count");
                        } else {
                                gb->type = 0;
                                continue;