1 /* 2 * 3 * Copyright 2015 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19 #ifndef GRPC_CORE_LIB_IOMGR_IOMGR_H 20 #define GRPC_CORE_LIB_IOMGR_IOMGR_H 21 22 #include <grpc/support/port_platform.h> 23 24 #include "src/core/lib/iomgr/closure.h" 25 #include "src/core/lib/iomgr/port.h" 26 27 #include <stdlib.h> 28 29 /** Initializes the iomgr. */ 30 void grpc_iomgr_init(); 31 32 /** Starts any background threads for iomgr. */ 33 void grpc_iomgr_start(); 34 35 /** Signals the intention to shutdown the iomgr. Expects to be able to flush 36 * exec_ctx. */ 37 void grpc_iomgr_shutdown(); 38 39 /** Signals the intention to shutdown all the closures registered in the 40 * background poller. */ 41 void grpc_iomgr_shutdown_background_closure(); 42 43 /* Returns true if polling engine runs in the background, false otherwise. 44 * Currently only 'epollbg' runs in the background. 45 */ 46 bool grpc_iomgr_run_in_background(); 47 48 /** Returns true if the caller is a worker thread for any background poller. */ 49 bool grpc_iomgr_is_any_background_poller_thread(); 50 51 /** Returns true if the closure is registered into the background poller. Note 52 * that the closure may or may not run yet when this function returns, and the 53 * closure should not be blocking or long-running. */ 54 bool grpc_iomgr_add_closure_to_background_poller(grpc_closure* closure, 55 grpc_error* error); 56 57 /* Exposed only for testing */ 58 size_t grpc_iomgr_count_objects_for_testing(); 59 60 #endif /* GRPC_CORE_LIB_IOMGR_IOMGR_H */ 61