diff --git a/backend.c b/backend.c index e2b7a466..c94483f9 100644 --- a/backend.c +++ b/backend.c @@ -2,6 +2,7 @@ * This file is part of the sigrok project. * * Copyright (C) 2010-2012 Bert Vermeulen + * Copyright (C) 2012 Peter Stuge * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,9 +27,24 @@ * * @return SR_OK upon success, a (negative) error code otherwise. */ -SR_API int sr_init(void) +SR_API int sr_init(struct sr_context **ctx) { - return SR_OK; + int ret = SR_ERR; + struct sr_context *context; + + /* + 1 to handle when struct sr_context has no members. */ + context = g_try_malloc0(sizeof(struct sr_context) + 1); + + if (!context) { + ret = SR_ERR_MALLOC; + goto done; + } + + *ctx = context; + ret = SR_OK; + +done: + return ret; } /** @@ -36,9 +52,11 @@ SR_API int sr_init(void) * * @return SR_OK upon success, a (negative) error code otherwise. */ -SR_API int sr_exit(void) +SR_API int sr_exit(struct sr_context *ctx) { sr_hw_cleanup_all(); + g_free(ctx); + return SR_OK; } diff --git a/libsigrok-internal.h b/libsigrok-internal.h index 2a8503ab..640ab0be 100644 --- a/libsigrok-internal.h +++ b/libsigrok-internal.h @@ -45,6 +45,9 @@ /* Size of a datastore chunk in units */ #define DATASTORE_CHUNKSIZE (512 * 1024) +struct sr_context { +}; + #ifdef HAVE_LIBUSB_1_0 struct sr_usb_dev_inst { uint8_t bus; diff --git a/libsigrok.h b/libsigrok.h index 3771e1ee..8a51f728 100644 --- a/libsigrok.h +++ b/libsigrok.h @@ -202,6 +202,8 @@ enum { SR_MQFLAG_RELATIVE = 0x100, }; +struct sr_context; + struct sr_datafeed_packet { uint16_t type; void *payload; diff --git a/proto.h b/proto.h index e520803c..49b2d747 100644 --- a/proto.h +++ b/proto.h @@ -22,8 +22,8 @@ /*--- backend.c -------------------------------------------------------------*/ -SR_API int sr_init(void); -SR_API int sr_exit(void); +SR_API int sr_init(struct sr_context **ctx); +SR_API int sr_exit(struct sr_context *ctx); /*--- log.c -----------------------------------------------------------------*/