4 * Copyright(c) 2016 Intel Corporation. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
17 * * Neither the name of Intel Corporation nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 #define RTE_KEEPALIVE_SHM_NAME "/dpdk_keepalive_shm_name"
36 #define RTE_KEEPALIVE_SHM_ALIVE 1
37 #define RTE_KEEPALIVE_SHM_DEAD 2
44 #include <semaphore.h>
45 #include <rte_keepalive.h>
48 * Keepalive SHM structure.
50 * The shared memory allocated by the primary is this size, and contains the
51 * information as contained within this struct. A secondary may open the SHM,
52 * and read the contents.
54 struct rte_keepalive_shm {
55 /** IPC semaphore. Posted when a core dies */
59 * Relayed status of each core.
61 enum rte_keepalive_state core_state[RTE_KEEPALIVE_MAXCORES];
64 * Last-seen-alive timestamps for the cores
66 uint64_t core_last_seen_times[RTE_KEEPALIVE_MAXCORES];
70 * Create shared host memory keepalive object.
72 * Pointer to SHM keepalive structure, or NULL on failure.
74 struct rte_keepalive_shm *rte_keepalive_shm_create(void);
77 * Relays state for given core
79 * Pointer to SHM keepalive structure.
85 * Last seen timestamp for core
87 void rte_keepalive_relayed_state(struct rte_keepalive_shm *shm,
88 const int id_core, const enum rte_keepalive_state core_state,
91 /** Shutdown cleanup of shared host memory keepalive object.
93 * Pointer to SHM keepalive structure. May be NULL.
95 * If *shm is NULL, this function will only attempt to remove the
96 * shared host memory handle and not unmap the underlying memory.
98 void rte_keepalive_shm_cleanup(struct rte_keepalive_shm *ka_shm);