165b390aaSDag-Erling Smørgrav /* 265b390aaSDag-Erling Smørgrav * util/shm_side/shm_main.h - control the shared memory for unbound. 365b390aaSDag-Erling Smørgrav * 465b390aaSDag-Erling Smørgrav * Copyright (c) 2007, NLnet Labs. All rights reserved. 565b390aaSDag-Erling Smørgrav * 665b390aaSDag-Erling Smørgrav * This software is open source. 765b390aaSDag-Erling Smørgrav * 865b390aaSDag-Erling Smørgrav * Redistribution and use in source and binary forms, with or without 965b390aaSDag-Erling Smørgrav * modification, are permitted provided that the following conditions 1065b390aaSDag-Erling Smørgrav * are met: 1165b390aaSDag-Erling Smørgrav * 1265b390aaSDag-Erling Smørgrav * Redistributions of source code must retain the above copyright notice, 1365b390aaSDag-Erling Smørgrav * this list of conditions and the following disclaimer. 1465b390aaSDag-Erling Smørgrav * 1565b390aaSDag-Erling Smørgrav * Redistributions in binary form must reproduce the above copyright notice, 1665b390aaSDag-Erling Smørgrav * this list of conditions and the following disclaimer in the documentation 1765b390aaSDag-Erling Smørgrav * and/or other materials provided with the distribution. 1865b390aaSDag-Erling Smørgrav * 1965b390aaSDag-Erling Smørgrav * Neither the name of the NLNET LABS nor the names of its contributors may 2065b390aaSDag-Erling Smørgrav * be used to endorse or promote products derived from this software without 2165b390aaSDag-Erling Smørgrav * specific prior written permission. 2265b390aaSDag-Erling Smørgrav * 2365b390aaSDag-Erling Smørgrav * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2465b390aaSDag-Erling Smørgrav * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2565b390aaSDag-Erling Smørgrav * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2665b390aaSDag-Erling Smørgrav * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2765b390aaSDag-Erling Smørgrav * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2865b390aaSDag-Erling Smørgrav * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 2965b390aaSDag-Erling Smørgrav * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 3065b390aaSDag-Erling Smørgrav * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 3165b390aaSDag-Erling Smørgrav * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 3265b390aaSDag-Erling Smørgrav * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 3365b390aaSDag-Erling Smørgrav * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3465b390aaSDag-Erling Smørgrav */ 3565b390aaSDag-Erling Smørgrav 3665b390aaSDag-Erling Smørgrav /** 3765b390aaSDag-Erling Smørgrav * \file 3865b390aaSDag-Erling Smørgrav * 3965b390aaSDag-Erling Smørgrav * This file contains functions for the SHM side. 4065b390aaSDag-Erling Smørgrav */ 4165b390aaSDag-Erling Smørgrav 4265b390aaSDag-Erling Smørgrav #ifndef UTIL_SHM_SIDE_MAIN_H 4365b390aaSDag-Erling Smørgrav #define UTIL_SHM_SIDE_MAIN_H 4465b390aaSDag-Erling Smørgrav struct daemon; 4565b390aaSDag-Erling Smørgrav struct worker; 4665b390aaSDag-Erling Smørgrav 47*c7f4d7adSDag-Erling Smørgrav /* get struct ub_shm_stat_info */ 48*c7f4d7adSDag-Erling Smørgrav #include "libunbound/unbound.h" 4965b390aaSDag-Erling Smørgrav 5065b390aaSDag-Erling Smørgrav /** 5165b390aaSDag-Erling Smørgrav * The SHM info. 5265b390aaSDag-Erling Smørgrav */ 5365b390aaSDag-Erling Smørgrav struct shm_main_info { 5465b390aaSDag-Erling Smørgrav /** stats_info array, shared memory segment. 5565b390aaSDag-Erling Smørgrav * [0] is totals, [1..thread_num] are per-thread stats */ 56*c7f4d7adSDag-Erling Smørgrav struct ub_stats_info* ptr_arr; 5765b390aaSDag-Erling Smørgrav /** the global stats block, shared memory segment */ 58*c7f4d7adSDag-Erling Smørgrav struct ub_shm_stat_info* ptr_ctl; 5965b390aaSDag-Erling Smørgrav int key; 6065b390aaSDag-Erling Smørgrav int id_ctl; 6165b390aaSDag-Erling Smørgrav int id_arr; 6265b390aaSDag-Erling Smørgrav }; 6365b390aaSDag-Erling Smørgrav 6465b390aaSDag-Erling Smørgrav int shm_main_init(struct daemon* daemon); 6565b390aaSDag-Erling Smørgrav void shm_main_shutdown(struct daemon* daemon); 6665b390aaSDag-Erling Smørgrav void shm_main_run(struct worker *worker); 6765b390aaSDag-Erling Smørgrav 6865b390aaSDag-Erling Smørgrav #endif /* UTIL_SHM_SIDE_MAIN_H */ 69