/alps/pcitool

To get this branch, use:
bzr branch http://suren.me/webbzr/alps/pcitool

« back to all changes in this revision

Viewing changes to pcilib/plugin.c

  • Committer: Suren A. Chilingaryan
  • Date: 2015-04-28 19:46:24 UTC
  • Revision ID: csa@suren.me-20150428194624-yd0e9d7nuxga2pn3
Check event interface version for plugins

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
#include <sys/types.h>
8
8
 
9
9
#include "model.h"
 
10
#include "error.h"
10
11
#include "pci.h"
11
12
#include "config.h"
12
13
 
42
43
 
43
44
const pcilib_model_description_t *pcilib_get_plugin_model(pcilib_t *pcilib, void *plug, unsigned short vendor_id, unsigned short device_id, const char *model) {
44
45
    void *get_model;
 
46
    const pcilib_model_description_t *model_info;
45
47
 
46
48
    if (!plug) return NULL;
47
49
 
48
50
    get_model = dlsym(plug, "pcilib_get_event_model");
49
51
    if (!get_model) return NULL;
50
52
 
51
 
    return ((const pcilib_model_description_t *(*)(pcilib_t *pcilib, unsigned short vendor_id, unsigned short device_id, const char *model))get_model)(pcilib, vendor_id, device_id, model);
 
53
    model_info = ((const pcilib_model_description_t *(*)(pcilib_t *pcilib, unsigned short vendor_id, unsigned short device_id, const char *model))get_model)(pcilib, vendor_id, device_id, model);
 
54
    if (!model_info) return model_info;
 
55
 
 
56
    if (model_info->interface_version != PCILIB_EVENT_INTERFACE_VERSION) {
 
57
        pcilib_warning("Plugin %s exposes outdated interface version (%lu), pcitool supports (%lu)", model_info->name, model_info->interface_version, PCILIB_EVENT_INTERFACE_VERSION);
 
58
        return NULL;
 
59
    }
 
60
 
 
61
    return model_info;
52
62
}
53
63
 
54
64
const pcilib_model_description_t *pcilib_find_plugin_model(pcilib_t *pcilib, unsigned short vendor_id, unsigned short device_id, const char *model) {