1 1.12 ozaki /* $NetBSD: shmifvar.h,v 1.12 2024/09/02 05:12:53 ozaki-r Exp $ */ 2 1.1 pooka 3 1.1 pooka /*- 4 1.6 pooka * Copyright (c) 2009, 2010 Antti Kantee. All Rights Reserved. 5 1.1 pooka * 6 1.1 pooka * Development of this software was supported by The Nokia Foundation. 7 1.1 pooka * 8 1.1 pooka * Redistribution and use in source and binary forms, with or without 9 1.1 pooka * modification, are permitted provided that the following conditions 10 1.1 pooka * are met: 11 1.1 pooka * 1. Redistributions of source code must retain the above copyright 12 1.1 pooka * notice, this list of conditions and the following disclaimer. 13 1.1 pooka * 2. Redistributions in binary form must reproduce the above copyright 14 1.1 pooka * notice, this list of conditions and the following disclaimer in the 15 1.1 pooka * documentation and/or other materials provided with the distribution. 16 1.1 pooka * 17 1.1 pooka * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 18 1.1 pooka * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 1.1 pooka * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 1.1 pooka * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21 1.1 pooka * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 1.1 pooka * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 1.1 pooka * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 1.1 pooka * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 1.1 pooka * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 1.1 pooka * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 1.1 pooka * SUCH DAMAGE. 28 1.1 pooka */ 29 1.1 pooka 30 1.1 pooka #ifndef _RUMP_NET_SHMIFVAR_H_ 31 1.1 pooka #define _RUMP_NET_SHMIFVAR_H_ 32 1.1 pooka 33 1.2 pooka #define SHMIF_MAGIC 0xca11d054 34 1.9 ozaki #define SHMIF_VERSION 3 35 1.2 pooka 36 1.1 pooka struct shmif_mem { 37 1.2 pooka uint32_t shm_magic; 38 1.2 pooka uint32_t shm_version; 39 1.2 pooka 40 1.3 pooka uint64_t shm_gen; 41 1.3 pooka 42 1.2 pooka uint32_t shm_first; 43 1.1 pooka uint32_t shm_last; 44 1.2 pooka 45 1.2 pooka uint32_t shm_lock; 46 1.3 pooka uint32_t shm_spare[1]; 47 1.2 pooka 48 1.1 pooka uint8_t shm_data[0]; 49 1.1 pooka }; 50 1.1 pooka 51 1.1 pooka #define IFMEM_DATA (offsetof(struct shmif_mem, shm_data)) 52 1.1 pooka #define IFMEM_WAKEUP (offsetof(struct shmif_mem, shm_version)) 53 1.4 pooka 54 1.4 pooka struct shmif_pkthdr { 55 1.4 pooka uint32_t sp_len; 56 1.4 pooka 57 1.4 pooka uint32_t sp_sec; 58 1.4 pooka uint32_t sp_usec; 59 1.8 ozaki 60 1.8 ozaki uint64_t sp_sender; 61 1.4 pooka }; 62 1.1 pooka 63 1.11 christos #define BUSMEM_SIZE (1024*1024U) 64 1.3 pooka #define BUSMEM_DATASIZE (BUSMEM_SIZE - sizeof(struct shmif_mem)) 65 1.3 pooka 66 1.12 ozaki #define LOCK_UNLOCKED 0 67 1.12 ozaki #define LOCK_LOCKED 1 68 1.12 ozaki #define LOCK_COOLDOWN 1001 69 1.12 ozaki 70 1.3 pooka #if 0 71 1.3 pooka #ifdef _KERNEL 72 1.7 pooka #include <rump/rumpuser.h> 73 1.3 pooka #define DPRINTF(x) rumpuser_dprintf x 74 1.3 pooka #else 75 1.10 ozaki #include <stdio.h> 76 1.3 pooka #define DPRINTF(x) printf x 77 1.3 pooka #endif 78 1.3 pooka #else 79 1.3 pooka #define DPRINTF(x) 80 1.3 pooka #endif 81 1.3 pooka 82 1.3 pooka uint32_t shmif_advance(uint32_t, uint32_t); 83 1.3 pooka uint32_t shmif_busread(struct shmif_mem *, 84 1.3 pooka void *, uint32_t, size_t, bool *); 85 1.3 pooka void shmif_advancefirst(struct shmif_mem *, uint32_t, size_t); 86 1.3 pooka uint32_t shmif_buswrite(struct shmif_mem *, uint32_t, 87 1.3 pooka void *, size_t, bool *); 88 1.3 pooka uint32_t shmif_nextpktoff(struct shmif_mem *, uint32_t); 89 1.3 pooka 90 1.1 pooka #endif 91