ceed.c (f90d6ea7419f62473d52d38b43c6c9a31b3d935a) ceed.c (58c07c4fa7bdba34c2b29fbdcd58893d48c3fd9e)
1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3//
4// SPDX-License-Identifier: BSD-2-Clause
5//
6// This file is part of CEED: http://github.com/ceed
7
8#define _POSIX_C_SOURCE 200112

--- 108 unchanged lines hidden (view full) ---

117 @param[in] priority Integer priority.
118 Lower values are preferred in case the resource requested by CeedInit() has non-unique best prefix match.
119
120 @return An error code: 0 - success, otherwise - failure
121
122 @ref Developer
123**/
124int CeedRegisterImpl(const char *prefix, int (*init)(const char *, Ceed), unsigned int priority) {
1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3//
4// SPDX-License-Identifier: BSD-2-Clause
5//
6// This file is part of CEED: http://github.com/ceed
7
8#define _POSIX_C_SOURCE 200112

--- 108 unchanged lines hidden (view full) ---

117 @param[in] priority Integer priority.
118 Lower values are preferred in case the resource requested by CeedInit() has non-unique best prefix match.
119
120 @return An error code: 0 - success, otherwise - failure
121
122 @ref Developer
123**/
124int CeedRegisterImpl(const char *prefix, int (*init)(const char *, Ceed), unsigned int priority) {
125 CeedCheck(num_backends < sizeof(backends) / sizeof(backends[0]), NULL, CEED_ERROR_MAJOR, "Too many backends");
125 int ierr = 0;
126
126
127 strncpy(backends[num_backends].prefix, prefix, CEED_MAX_RESOURCE_LEN);
128 backends[num_backends].prefix[CEED_MAX_RESOURCE_LEN - 1] = 0;
129 backends[num_backends].init = init;
130 backends[num_backends].priority = priority;
131 num_backends++;
127 CeedPragmaCritical(CeedRegisterImpl) {
128 if (num_backends < sizeof(backends) / sizeof(backends[0])) {
129 strncpy(backends[num_backends].prefix, prefix, CEED_MAX_RESOURCE_LEN);
130 backends[num_backends].prefix[CEED_MAX_RESOURCE_LEN - 1] = 0;
131 backends[num_backends].init = init;
132 backends[num_backends].priority = priority;
133 num_backends++;
134 } else {
135 ierr = 1;
136 }
137 }
138 // LCOV_EXCL_START
139 CeedCheck(ierr == 0, NULL, CEED_ERROR_MAJOR, "Too many backends");
140 // LCOV_EXCL_STOP
132 return CEED_ERROR_SUCCESS;
133}
134
135/// @}
136
137/// ----------------------------------------------------------------------------
138/// Ceed Backend API
139/// ----------------------------------------------------------------------------

--- 1123 unchanged lines hidden ---
141 return CEED_ERROR_SUCCESS;
142}
143
144/// @}
145
146/// ----------------------------------------------------------------------------
147/// Ceed Backend API
148/// ----------------------------------------------------------------------------

--- 1123 unchanged lines hidden ---