]> Devoid-pointer.net GitWeb - KLGD.git/commitdiff
Add a "spinning" alternative to plugin locking (might not be a good
authorMichal Malý <madcatxster@devoid-pointer.net>
Wed, 23 Sep 2015 16:01:04 +0000 (18:01 +0200)
committerMichal Malý <madcatxster@devoid-pointer.net>
Wed, 23 Sep 2015 16:01:04 +0000 (18:01 +0200)
idea!)

klgd.c
klgd.h

diff --git a/klgd.c b/klgd.c
index 78b5aca504202680893f2bd0d9198419ca64447d..e2feee4034a0ed5b668d46917e30b140dcf2ba66 100644 (file)
--- a/klgd.c
+++ b/klgd.c
@@ -338,6 +338,13 @@ void klgd_lock_plugins(struct mutex *lock)
 }
 EXPORT_SYMBOL_GPL(klgd_lock_plugins);
 
+void klgd_lock_plugins_spin(struct mutex *lock)
+{
+       while (!mutex_trylock(lock));
+       printk(KERN_DEBUG "KLGD: Plugin state locked (spinning)\n");
+}
+EXPORT_SYMBOL_GPL(klgd_lock_plugins_spin);
+
 struct klgd_command * klgd_make_command(const char * const bytes, const size_t length)
 {
        struct klgd_command *cmd = kzalloc(sizeof(struct klgd_command), GFP_KERNEL);
diff --git a/klgd.h b/klgd.h
index b10e9c1a5c1db0137520e09b8d29fc983a64c082..1bad9ae7bf468dc566da7fa7d86d97985a49b2fc 100644 (file)
--- a/klgd.h
+++ b/klgd.h
@@ -47,6 +47,7 @@ void klgd_free_command(const struct klgd_command *cmd);
 void klgd_free_stream(struct klgd_command_stream *s);
 int klgd_init(struct klgd_main *ctx, void *dev_ctx, int (*callback)(void *, const struct klgd_command_stream *), const unsigned long plugin_count);
 void klgd_lock_plugins(struct mutex *lock);
+void klgd_lock_plugins_spin(struct mutex *lock);
 struct klgd_command * klgd_make_cmd(const char * const bytes);
 int klgd_register_plugin(struct klgd_main *ctx, const size_t idx, struct klgd_plugin *plugin, bool dontfree);
 void klgd_unlock_plugins(struct mutex *lock);