You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2016/11/22 01:17:15 UTC
[16/27] incubator-mynewt-core git commit: oic;
use os_mempool for oc_client_cbs, and oc_app_resources.
oic; use os_mempool for oc_client_cbs, and oc_app_resources.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/a2c3b0d8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/a2c3b0d8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/a2c3b0d8
Branch: refs/heads/develop
Commit: a2c3b0d8b89a631d69fff5776f92e07298d81693
Parents: 502f410
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Mon Nov 21 17:03:17 2016 -0800
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Mon Nov 21 17:15:49 2016 -0800
----------------------------------------------------------------------
net/oic/src/api/oc_ri.c | 119 +++++++++++++++++++++++--------------------
1 file changed, 65 insertions(+), 54 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/a2c3b0d8/net/oic/src/api/oc_ri.c
----------------------------------------------------------------------
diff --git a/net/oic/src/api/oc_ri.c b/net/oic/src/api/oc_ri.c
index 8fd4f8d..9219f7b 100644
--- a/net/oic/src/api/oc_ri.c
+++ b/net/oic/src/api/oc_ri.c
@@ -19,9 +19,9 @@
#include <strings.h>
#include <os/os_callout.h>
+#include <os/os_mempool.h>
#include "util/oc_list.h"
-#include "util/oc_memb.h"
#include "messaging/coap/constants.h"
#include "messaging/coap/engine.h"
@@ -47,7 +47,9 @@
#ifdef OC_SERVER
OC_LIST(app_resources);
OC_LIST(observe_callbacks);
-OC_MEMB(app_resources_s, oc_resource_t, MAX_APP_RESOURCES);
+static struct os_mempool oc_resources;
+static uint8_t oc_resource_area[OS_MEMPOOL_BYTES(MAX_APP_RESOURCES,
+ sizeof(oc_resource_t))];
static void periodic_observe_handler(struct os_event *ev);
#endif /* OC_SERVER */
@@ -55,7 +57,9 @@ static void periodic_observe_handler(struct os_event *ev);
#ifdef OC_CLIENT
#include "oc_client_state.h"
OC_LIST(client_cbs);
-OC_MEMB(client_cbs_s, oc_client_cb_t, MAX_NUM_CONCURRENT_REQUESTS);
+static struct os_mempool oc_client_cbs;
+static uint8_t oc_client_cb_area[OS_MEMPOOL_BYTES(MAX_NUM_CONCURRENT_REQUESTS,
+ sizeof(oc_client_cb_t))];
#endif /* OC_CLIENT */
// TODO: Define and use a complete set of error codes.
@@ -219,11 +223,15 @@ oc_ri_init(void)
#ifdef OC_SERVER
oc_list_init(app_resources);
+ os_mempool_init(&oc_resources, MAX_APP_RESOURCES, sizeof(oc_resource_t),
+ oc_resource_area, "oc_res");
oc_list_init(observe_callbacks);
#endif
#ifdef OC_CLIENT
oc_list_init(client_cbs);
+ os_mempool_init(&oc_client_cbs, MAX_NUM_CONCURRENT_REQUESTS,
+ sizeof(oc_client_cb_t), oc_client_cb_area, "oc_cl_cbs");
#endif
oc_rep_init();
oc_buffer_init();
@@ -245,7 +253,7 @@ oc_ri_alloc_resource(void)
{
struct oc_resource_s *resource;
- resource = oc_memb_alloc(&app_resources_s);
+ resource = os_memblock_get(&oc_resources);
if (resource) {
os_callout_init(&resource->callout, oc_evq_get(),
periodic_observe_handler, resource);
@@ -256,27 +264,27 @@ oc_ri_alloc_resource(void)
void
oc_ri_delete_resource(oc_resource_t *resource)
{
- oc_memb_free(&app_resources_s, resource);
+ os_memblock_put(&oc_resources, resource);
}
bool
oc_ri_add_resource(oc_resource_t *resource)
{
- bool valid = true;
+ bool valid = true;
- if (!resource->get_handler && !resource->put_handler &&
- !resource->post_handler && !resource->delete_handler)
- valid = false;
-
- if (resource->properties & OC_PERIODIC &&
- resource->observe_period_seconds == 0)
- valid = false;
-
- if (valid) {
- oc_list_add(app_resources, resource);
- }
+ if (!resource->get_handler && !resource->put_handler &&
+ !resource->post_handler && !resource->delete_handler) {
+ valid = false;
+ }
+ if (resource->properties & OC_PERIODIC &&
+ resource->observe_period_seconds == 0) {
+ valid = false;
+ }
+ if (valid) {
+ oc_list_add(app_resources, resource);
+ }
- return valid;
+ return valid;
}
#endif /* OC_SERVER */
@@ -670,7 +678,7 @@ free_client_cb(oc_client_cb_t *cb)
os_callout_stop(&cb->callout);
oc_free_string(&cb->uri);
oc_list_remove(client_cbs, cb);
- oc_memb_free(&client_cbs_s, cb);
+ os_memblock_put(&oc_client_cbs, cb);
}
void
@@ -806,20 +814,21 @@ oc_client_cb_t *
oc_ri_get_client_cb(const char *uri, oc_server_handle_t *server,
oc_method_t method)
{
- oc_client_cb_t *cb = (oc_client_cb_t *)oc_list_head(client_cbs);
-
- while (cb != NULL) {
- if (oc_string_len(cb->uri) == strlen(uri) &&
- strncmp(oc_string(cb->uri), uri, strlen(uri)) == 0 &&
- memcmp(&cb->server.endpoint, &server->endpoint,
- sizeof(oc_endpoint_t)) == 0 &&
- cb->method == method)
- return cb;
+ oc_client_cb_t *cb = (oc_client_cb_t *)oc_list_head(client_cbs);
+
+ while (cb != NULL) {
+ if (oc_string_len(cb->uri) == strlen(uri) &&
+ strncmp(oc_string(cb->uri), uri, strlen(uri)) == 0 &&
+ memcmp(&cb->server.endpoint, &server->endpoint,
+ sizeof(oc_endpoint_t)) == 0 &&
+ cb->method == method) {
+ return cb;
+ }
- cb = cb->next;
- }
+ cb = cb->next;
+ }
- return cb;
+ return cb;
}
static void
@@ -836,32 +845,34 @@ oc_client_cb_t *
oc_ri_alloc_client_cb(const char *uri, oc_server_handle_t *server,
oc_method_t method, void *handler, oc_qos_t qos)
{
- oc_client_cb_t *cb = oc_memb_alloc(&client_cbs_s);
- if (!cb)
- return cb;
+ oc_client_cb_t *cb;
- cb->mid = coap_get_mid();
- oc_new_string(&cb->uri, uri);
- cb->method = method;
- cb->qos = qos;
- cb->handler = handler;
- cb->token_len = 8;
- int i = 0;
- uint16_t r;
- while (i < cb->token_len) {
- r = oc_random_rand();
- memcpy(cb->token + i, &r, sizeof(r));
- i += sizeof(r);
- }
- cb->discovery = false;
- cb->timestamp = oc_clock_time();
- cb->observe_seq = -1;
- memcpy(&cb->server, server, sizeof(oc_server_handle_t));
+ cb = os_memblock_get(&oc_client_cbs);
+ if (!cb) {
+ return NULL;
+ }
+ cb->mid = coap_get_mid();
+ oc_new_string(&cb->uri, uri);
+ cb->method = method;
+ cb->qos = qos;
+ cb->handler = handler;
+ cb->token_len = 8;
+ int i = 0;
+ uint16_t r;
+ while (i < cb->token_len) {
+ r = oc_random_rand();
+ memcpy(cb->token + i, &r, sizeof(r));
+ i += sizeof(r);
+ }
+ cb->discovery = false;
+ cb->timestamp = oc_clock_time();
+ cb->observe_seq = -1;
+ memcpy(&cb->server, server, sizeof(oc_server_handle_t));
- os_callout_init(&cb->callout, oc_evq_get(), oc_ri_remove_cb, cb);
+ os_callout_init(&cb->callout, oc_evq_get(), oc_ri_remove_cb, cb);
- oc_list_add(client_cbs, cb);
- return cb;
+ oc_list_add(client_cbs, cb);
+ return cb;
}
#endif /* OC_CLIENT */