From patchwork Fri Feb 2 10:00:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 126622 Delivered-To: patch@linaro.org Received: by 10.46.124.24 with SMTP id x24csp483989ljc; Fri, 2 Feb 2018 02:01:37 -0800 (PST) X-Google-Smtp-Source: AH8x226fLUG+pmk7EAbeoDVquAOc871EeO+J9N2DLj22AQfZvvFIl2NsKTe+8wuayf6aryw1C/b0 X-Received: by 10.200.36.67 with SMTP id d3mr61372950qtd.329.1517565697201; Fri, 02 Feb 2018 02:01:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517565697; cv=none; d=google.com; s=arc-20160816; b=bJ0/RuBbFVOefXdvsNlSRHlqXnsBWjSzNoc42SUWVmFlrj/U0utNjF797/kcMOjmaj bXUd83iCLIWUUeba+D7a6svJvkxF46193Ut7r7z7rR2xuZVy/9/EG1lyLSBfViYChqo7 YD/xDyMxnwC06stw2/AcL/FPOTaQur51+vot7WGvL3b5ofp3DJ6CqhziNwc1z/0gykIn LH2AKsHtEvd8XbG2Ti3QKVJ6K3hABUGMzyiexhS0EJVQfWXpjq4+PAtuanf1J4DRFr8q IehOk7zjlP5JPZKMwaW6LNnrRFGo957l7O6Hhe1IZPz6zo5vTVjk9OVWAKCNcNDV21vZ 37Eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=FCb9gc3rLhn/vMMZM14mdr+xRqoLFdtpHY/fxE1TiXc=; b=aAft7kgkCQ8FXMHBPp38APExba873wRki0OO6iMs8zbC29gj2yNTj6dbwqU/djikD9 WWg47m1WwVfr13mAwMjsFVDB7EyXAETw36xj8t4qXd7GgehdiXpZzQ7kPGw/vffDY9nV wNKJHLKn3w5z+y6ylGiAg+w0loY1qs57zis62VvLc7dr/0xHXymd4vx+dt34KgGGo3MV JdRslaLvaf0f+erezUipaufR4SEY5bqhN7U7ls/uk1PSbILwe8IzJ43onBMyUiS427pX GnJ0YKAwDnwln1QKJDLRba+8XEXRXtz5NKI2kMHlx2Kza+DzUaZ0a+9geNxm0I+dS+w3 myQA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id d6si1340011qtf.459.2018.02.02.02.01.36; Fri, 02 Feb 2018 02:01:37 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id C845761798; Fri, 2 Feb 2018 10:01:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2 autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 0F39A6179E; Fri, 2 Feb 2018 10:00:31 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 21D24610B9; Fri, 2 Feb 2018 10:00:23 +0000 (UTC) Received: from forward105o.mail.yandex.net (forward105o.mail.yandex.net [37.140.190.183]) by lists.linaro.org (Postfix) with ESMTPS id 43BA1606B5 for ; Fri, 2 Feb 2018 10:00:20 +0000 (UTC) Received: from mxback4g.mail.yandex.net (mxback4g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:165]) by forward105o.mail.yandex.net (Yandex) with ESMTP id 6A8D14442A92 for ; Fri, 2 Feb 2018 13:00:14 +0300 (MSK) Received: from smtp1j.mail.yandex.net (smtp1j.mail.yandex.net [2a02:6b8:0:801::ab]) by mxback4g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id oXpe1FTbz4-0EZq2lvr; Fri, 02 Feb 2018 13:00:14 +0300 Received: by smtp1j.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id opjCzdDZJW-0Dj0cENH; Fri, 02 Feb 2018 13:00:13 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Fri, 2 Feb 2018 13:00:11 +0300 Message-Id: <1517565612-17887-3-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1517565612-17887-1-git-send-email-odpbot@yandex.ru> References: <1517565612-17887-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 446 Subject: [lng-odp] [PATCH API-NEXT v2 2/3] api: init: add shm memory size parameter X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Petri Savolainen Application memory usage may vary a lot. Implementation may need to pre-allocate memory or address space already at init time to be able to guarantee e.g. the same VA address space for all threads. Total SHM memory usage information is needed at global init time, as implementation likely uses the same shared memory for its own global memory allocations. Signed-off-by: Petri Savolainen --- /** Email created from pull request 446 (psavol:next-global-init-shm-size-2) ** https://github.com/Linaro/odp/pull/446 ** Patch: https://github.com/Linaro/odp/pull/446.patch ** Base sha: 5718327018debbb02aacb464493504c95fbe57a3 ** Merge commit sha: 3ceb1d8923dfe4b778ca652825396e422766c012 **/ include/odp/api/spec/init.h | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/include/odp/api/spec/init.h b/include/odp/api/spec/init.h index 21734db2a..ee33e7cd4 100644 --- a/include/odp/api/spec/init.h +++ b/include/odp/api/spec/init.h @@ -107,23 +107,29 @@ typedef int (*odp_log_func_t)(odp_log_level_t level, const char *fmt, ...); typedef void (*odp_abort_func_t)(void) ODP_NORETURN; /** - * ODP initialization data + * Global initialization parameters * - * Data that is required to initialize the ODP API with the - * application specific data such as specifying a logging callback, the log - * level etc. + * These parameters may be used at global initialization time to configure and + * optimize ODP implementation to match the intended usage. Application + * specifies maximum resource usage. Implementation may round up resource + * reservations as needed. Initialization function returns a failure if resource + * requirements are too high. Init parameters may be used also to override + * logging and abort functions. * - * @note It is expected that all unassigned members are zero + * Use odp_init_param_init() to initialize the parameters into their default + * values. Unused parameters are left to default values. */ typedef struct odp_init_t { /** Maximum number of worker threads the user will run concurrently. Valid range is from 0 to platform specific maximum. Set both num_worker and num_control to zero for default number of threads. */ int num_worker; + /** Maximum number of control threads the user will run concurrently. Valid range is from 0 to platform specific maximum. Set both num_worker and num_control to zero for default number of threads. */ int num_control; + /** Pointer to bit mask mapping CPUs available to this ODP instance for running worker threads. Initialize to a NULL pointer to use default CPU mapping. @@ -139,6 +145,7 @@ typedef struct odp_init_t { worker masks */ const odp_cpumask_t *worker_cpus; + /** Pointer to bit mask mapping CPUs available to this ODP instance for running control threads. Initialize to a NULL pointer to use default CPU mapping. @@ -150,10 +157,13 @@ typedef struct odp_init_t { worker and control masks do not overlap. */ const odp_cpumask_t *control_cpus; + /** Replacement for the default log fn */ odp_log_func_t log_fn; + /** Replacement for the default abort fn */ odp_abort_func_t abort_fn; + /** Unused features. These are hints to the ODP implementation that * the application will not use any APIs associated with these * features. Implementations may use this information to provide @@ -161,6 +171,16 @@ typedef struct odp_init_t { * that a feature will not be used and it is used anyway. */ odp_feature_t not_used; + + /** Shared memory parameters */ + struct { + /** Maximum memory usage in bytes. This is the maximum + * amount of shared memory that application will reserve + * concurrently. Use 0 when not set. Default value is 0. + */ + uint64_t max_memory; + } shm; + } odp_init_t; /** @@ -189,7 +209,8 @@ void odp_init_param_init(odp_init_t *param); * system and outputs a handle for it. The handle is used in other calls * (e.g. odp_init_local()) as a reference to the instance. When user provides * configuration parameters, the platform may configure and optimize the - * instance to match user requirements. + * instance to match user requirements. A failure is returned if requirements + * cannot be met. * * Configuration parameters are divided into standard and platform specific * parts. Standard parameters are supported by any ODP platform, where as