• Cyrill Gorcunov's avatar
    plugin: Rework plugins API, v2 · 3146f583
    Cyrill Gorcunov authored
    Here we define new api to be used in plugins.
    
     - Plugin should provide a descriptor with help of
       CR_PLUGIN_REGISTER macro, or in case if plugin require
       no init/exit functions -- with CR_PLUGIN_REGISTER_DUMMY.
    
     - Plugin should define a plugin hook with help of
       CR_PLUGIN_REGISTER_HOOK macro.
    
     - Now init/exit functions of plugins takes @stage
       argument which tells plugin which stage of criu
       it's been called on dump/restore. For exit it
       also takes @ret which allows plugin to know if
       something went wrong and it needs to cleanup
       own resources.
    
    The idea behind is to not limit plugins authors with names
    of functions they might need to use for particular hook.
    
    Such new API deprecates olds plugins structure but to keep
    backward compatibility we will provide a tiny layer of
    additional code to support old plugins for at least a couple
    of release cycles.
    
    For example a trivial plugin might look like
    
     | #include <sys/types.h>
     | #include <sys/stat.h>
     | #include <fcntl.h>
     | #include <libgen.h>
     | #include <errno.h>
     |
     | #include <sys/socket.h>
     | #include <linux/un.h>
     |
     | #include <stdio.h>
     | #include <stdlib.h>
     | #include <string.h>
     | #include <unistd.h>
     |
     | #include "criu-plugin.h"
     | #include "criu-log.h"
     |
     | static int dump_ext_file(int fd, int id)
     | {
     |	pr_info("dump_ext_file: fd %d id %d\n", fd, id);
     |	return 0;
     | }
     |
     | CR_PLUGIN_REGISTER_DUMMY("trivial")
     | CR_PLUGIN_REGISTER_HOOK(CR_PLUGIN_HOOK__DUMP_EXT_FILE, dump_ext_file)
    Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
    Acked-by: 's avatarAndrew Vagin <avagin@parallels.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
    3146f583
plugin.h 1.16 KB