]> sigrok.org Git - libsigrok.git/commitdiff
Add a struct sr_context * parameter to sr_init() and sr_exit()
authorPeter Stuge <redacted>
Sun, 21 Oct 2012 18:23:14 +0000 (20:23 +0200)
committerPeter Stuge <redacted>
Sun, 21 Oct 2012 18:23:14 +0000 (20:23 +0200)
backend.c
libsigrok-internal.h
libsigrok.h
proto.h

index e2b7a466a9aab052e1680fad6d00dc3c367940bc..c94483f96be3d3e0ddfda4f17a28d3ae7d0a6e9b 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -2,6 +2,7 @@
  * This file is part of the sigrok project.
  *
  * Copyright (C) 2010-2012 Bert Vermeulen <bert@biot.com>
+ * Copyright (C) 2012 Peter Stuge <peter@stuge.se>
  *
  * 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
  *
  * @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;
 }
index 2a8503abd37e80c51f9d90301a84cfc6617e0d5b..640ab0bed0ce3df237a0c038bb0ee7f456732054 100644 (file)
@@ -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;
index 3771e1ee660387bf47fc1013bf6d4656b2b0ca49..8a51f728dd615612d3ada75eac9d1a80d1c2f7fb 100644 (file)
@@ -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 e520803c5d2fe5b0f142a05b0fccc19611f87fd1..49b2d7473087b6c16baea3b896ea266c5dbbd7c3 100644 (file)
--- 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 -----------------------------------------------------------------*/