1 /* Declarations for caching. Typically used by remote back ends for 2 caching remote memory. 3 4 Copyright (C) 1992-2023 Free Software Foundation, Inc. 5 6 This file is part of GDB. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 20 21 #ifndef DCACHE_H 22 #define DCACHE_H 23 24 #include "target.h" /* for enum target_xfer_status */ 25 26 typedef struct dcache_struct DCACHE; 27 28 /* Invalidate DCACHE. */ 29 void dcache_invalidate (DCACHE *dcache); 30 31 /* Initialize DCACHE. */ 32 DCACHE *dcache_init (void); 33 34 /* Free a DCACHE. */ 35 void dcache_free (DCACHE *); 36 37 /* A deletion adapter that calls dcache_free. */ 38 struct dcache_deleter 39 { 40 void operator() (DCACHE *d) const 41 { 42 dcache_free (d); 43 } 44 }; 45 46 enum target_xfer_status 47 dcache_read_memory_partial (struct target_ops *ops, DCACHE *dcache, 48 CORE_ADDR memaddr, gdb_byte *myaddr, 49 ULONGEST len, ULONGEST *xfered_len); 50 51 void dcache_update (DCACHE *dcache, enum target_xfer_status status, 52 CORE_ADDR memaddr, const gdb_byte *myaddr, 53 ULONGEST len); 54 55 #endif /* DCACHE_H */ 56