1*3d8e8822SJeremy L Thompson // Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors. 2*3d8e8822SJeremy L Thompson // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 31ef3f58fSjeremylt // 4*3d8e8822SJeremy L Thompson // SPDX-License-Identifier: BSD-2-Clause 51ef3f58fSjeremylt // 6*3d8e8822SJeremy L Thompson // This file is part of CEED: http://github.com/ceed 71ef3f58fSjeremylt 8ec3da8bcSJed Brown #include <ceed/ceed.h> 9ec3da8bcSJed Brown #include <ceed/backend.h> 103d576824SJeremy L Thompson #include <string.h> 111ef3f58fSjeremylt #include "ceed-memcheck.h" 121ef3f58fSjeremylt 13f10650afSjeremylt //------------------------------------------------------------------------------ 14f10650afSjeremylt // Backend Init 15f10650afSjeremylt //------------------------------------------------------------------------------ 161ef3f58fSjeremylt static int CeedInit_Memcheck(const char *resource, Ceed ceed) { 171ef3f58fSjeremylt int ierr; 18d9995aecSjeremylt if (strcmp(resource, "/cpu/self/memcheck") 19d9995aecSjeremylt && strcmp(resource, "/cpu/self/memcheck/serial")) 201ef3f58fSjeremylt // LCOV_EXCL_START 21e15f9bd0SJeremy L Thompson return CeedError(ceed, CEED_ERROR_BACKEND, 22e15f9bd0SJeremy L Thompson "Valgrind Memcheck backend cannot use resource: %s", 231ef3f58fSjeremylt resource); 241ef3f58fSjeremylt // LCOV_EXCL_STOP 251ef3f58fSjeremylt 265f67fadeSJeremy L Thompson // Create reference CEED that implementation will be dispatched 271ef3f58fSjeremylt // through unless overridden 28d1d35e2fSjeremylt Ceed ceed_ref; 29d1d35e2fSjeremylt CeedInit("/cpu/self/ref/serial", &ceed_ref); 30d1d35e2fSjeremylt ierr = CeedSetDelegate(ceed, ceed_ref); CeedChkBackend(ierr); 311ef3f58fSjeremylt 321ef3f58fSjeremylt ierr = CeedSetBackendFunction(ceed, "Ceed", ceed, "QFunctionCreate", 33e15f9bd0SJeremy L Thompson CeedQFunctionCreate_Memcheck); CeedChkBackend(ierr); 341ef3f58fSjeremylt 35e15f9bd0SJeremy L Thompson return CEED_ERROR_SUCCESS; 361ef3f58fSjeremylt } 371ef3f58fSjeremylt 38f10650afSjeremylt //------------------------------------------------------------------------------ 39f10650afSjeremylt // Backend Register 40f10650afSjeremylt //------------------------------------------------------------------------------ 411d013790SJed Brown CEED_INTERN int CeedRegister_Memcheck_Serial(void) { 421d013790SJed Brown return CeedRegister("/cpu/self/memcheck/serial", CeedInit_Memcheck, 100); 431ef3f58fSjeremylt } 44f10650afSjeremylt //------------------------------------------------------------------------------ 45