| 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 --- |