summaryrefslogtreecommitdiffstats
path: root/pcilib/event.c
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2015-10-22 15:57:59 +0200
committerSuren A. Chilingaryan <csa@suren.me>2015-10-22 15:57:59 +0200
commita0fe5cdea15bca52d3b101a88c11cb160ef08b2f (patch)
treee40e5d90ed013e33617931b049c5039e37a1f51f /pcilib/event.c
parentee18798c64c6e40433413b73bf07bbe027a9cc6e (diff)
downloadpcitool-a0fe5cdea15bca52d3b101a88c11cb160ef08b2f.tar.gz
pcitool-a0fe5cdea15bca52d3b101a88c11cb160ef08b2f.tar.bz2
pcitool-a0fe5cdea15bca52d3b101a88c11cb160ef08b2f.tar.xz
pcitool-a0fe5cdea15bca52d3b101a88c11cb160ef08b2f.zip
Documentation update
Diffstat (limited to 'pcilib/event.c')
-rw-r--r--pcilib/event.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/pcilib/event.c b/pcilib/event.c
index 2fc77ab..6b37dac 100644
--- a/pcilib/event.c
+++ b/pcilib/event.c
@@ -147,6 +147,9 @@ int pcilib_configure_preprocessing_threads(pcilib_t *ctx, size_t max_threads) {
}
int pcilib_start(pcilib_t *ctx, pcilib_event_t event_mask, pcilib_event_flags_t flags) {
+ int err;
+ pcilib_register_value_t max_threads;
+
const pcilib_event_api_description_t *api;
const pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
@@ -156,6 +159,12 @@ int pcilib_start(pcilib_t *ctx, pcilib_event_t event_mask, pcilib_event_flags_t
return PCILIB_ERROR_NOTSUPPORTED;
}
+ err = pcilib_read_register(ctx, "conf", "max_threads", &max_threads);
+ if (!err) {
+ err = pcilib_configure_preprocessing_threads(ctx, max_threads);
+ if (err) pcilib_warning("Error (%i) configuring number of preprocessing threads", err);
+ }
+
if (api->start)
return api->start(ctx->event_ctx, event_mask, flags);
@@ -430,7 +439,12 @@ int pcilib_grab(pcilib_t *ctx, pcilib_event_t event_mask, size_t *size, void **d
pcilib_grab_callback_user_data_t user = {ctx, size, data};
err = pcilib_start(ctx, event_mask, PCILIB_EVENT_FLAGS_DEFAULT);
- if (!err) err = pcilib_trigger(ctx, event_mask, 0, NULL);
+ if (!err) {
+ if (timeout == PCILIB_TIMEOUT_IMMEDIATE) {
+ err = pcilib_trigger(ctx, event_mask, 0, NULL);
+ timeout = PCILIB_EVENT_TIMEOUT;
+ }
+ }
if (!err) {
err = pcilib_get_next_event(ctx, timeout, &eid, 0, NULL);
if (!err) pcilib_grab_callback(event_mask, eid, &user);