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 26typedef struct dcache_struct DCACHE; 27 28/* Invalidate DCACHE. */ 29void dcache_invalidate (DCACHE *dcache); 30 31/* Initialize DCACHE. */ 32DCACHE *dcache_init (void); 33 34/* Free a DCACHE. */ 35void dcache_free (DCACHE *); 36 37/* A deletion adapter that calls dcache_free. */ 38struct dcache_deleter 39{ 40 void operator() (DCACHE *d) const 41 { 42 dcache_free (d); 43 } 44}; 45 46enum 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 51void 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