xref: /freebsd/contrib/unbound/util/shm_side/shm_main.h (revision c7f4d7ad9b7dbb008bffe724ae877e10fea2f821)
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