mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'physmem-20251007' of https://github.com/philmd/qemu into staging
Memory patches - Cleanups on RAMBlock API - Cleanups on Physical Memory API - Remove cpu_physical_memory_is_io() - Remove cpu_physical_memory_rw() - Legacy conversion [cpu_physical_memory -> address_space]_[un]map() # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmjkgzUACgkQ4+MsLN6t # wN7ouQ//V/goGzlt3AueQCs3UwYLsnLbHq6PIlddEmbEe4VobgBMY6qhgvM54dhS # EX/uBikOVHNSjFzKTcr67fLk+wIaGpY6VeZWHibKTh9dFPGjPCBOshYRQl8Oe31p # 4sIppkJGcuvQyXO07avLoSbpUo7REDja1G688D45ANOEPpb+7nHJlgq7uWUlbT5k # ICqT6TF+V0nmM/4yK19sFdimyS++PtnAgLwdODhG6apMNy8CkjE2I6IaPFHaCJEf # +we8iHxhPn6NkP7P7EHDNkLAOz/jhL7pIf3/kC3Pc+aMtXYOrH1dVcmMhF9zbP/F # MXMQIOIhKbuEksqIpTqP80UegTO4WVBPPDNZafRtA3Fzfex5WU0PxbtrwZtSNCP4 # e5mSp36Xp2fLaAsXMZBIUQrRnj4Hy0m7YMFSi8aoMsJRvnou6cJ02BCWjP+VUk74 # rrGpHKZ3vIhwVsRVcU43m8Xctk0H9KkhOTVvOGqzBUnJUo2eQb7w4qUxim7L8EoP # g2AOak+wdwpi0402QFPf2PD1WKGu3kc3Kuny/C7YeIUdTrRR8wPCWsIjmusFRnFv # 1deZOlwVu4ESIuPiuHsLN7WbSZjEPxZH4cgUZmdeoKCTn6vNkC6FWlluMnS8Y+Bb # c3AKo9kVatznQvY/qiH8h8rYqI8RFta8F8QHoIo1t41YJKlzuOY= # =FLzC # -----END PGP SIGNATURE----- # gpg: Signature made Mon 06 Oct 2025 08:04:21 PM PDT # gpg: using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE # gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: FAAB E75E 1291 7221 DCFD 6BB2 E3E3 2C2C DEAD C0DE * tag 'physmem-20251007' of https://github.com/philmd/qemu: (41 commits) system/physmem: Extract API out of 'system/ram_addr.h' header system/physmem: Drop 'cpu_' prefix in Physical Memory API system/physmem: Reduce cpu_physical_memory_sync_dirty_bitmap() scope system/physmem: Reduce cpu_physical_memory_clear_dirty_range() scope system/physmem: Un-inline cpu_physical_memory_dirty_bits_cleared() system/physmem: Un-inline cpu_physical_memory_set_dirty_lebitmap() system/physmem: Remove _WIN32 #ifdef'ry system/physmem: Un-inline cpu_physical_memory_set_dirty_range() system/physmem: Un-inline cpu_physical_memory_set_dirty_flag() system/physmem: Un-inline cpu_physical_memory_range_includes_clean() system/physmem: Un-inline cpu_physical_memory_is_clean() system/physmem: Un-inline cpu_physical_memory_get_dirty_flag() hw: Remove unnecessary 'system/ram_addr.h' header target/arm/tcg/mte: Include missing 'exec/target_page.h' header hw/vfio/listener: Include missing 'exec/target_page.h' header hw/s390x/s390-stattrib: Include missing 'exec/target_page.h' header accel/kvm: Include missing 'exec/target_page.h' header system/ram_addr: Remove unnecessary 'exec/cpu-common.h' header hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
@@ -3222,6 +3222,7 @@ S: Supported
|
||||
F: include/system/ioport.h
|
||||
F: include/exec/memop.h
|
||||
F: include/system/memory.h
|
||||
F: include/system/physmem.h
|
||||
F: include/system/ram_addr.h
|
||||
F: include/system/ramblock.h
|
||||
F: include/system/memory_mapping.h
|
||||
|
||||
+4
-2
@@ -32,11 +32,13 @@
|
||||
#include "system/runstate.h"
|
||||
#include "system/cpus.h"
|
||||
#include "system/accel-blocker.h"
|
||||
#include "system/physmem.h"
|
||||
#include "system/ramblock.h"
|
||||
#include "accel/accel-ops.h"
|
||||
#include "qemu/bswap.h"
|
||||
#include "exec/tswap.h"
|
||||
#include "exec/target_page.h"
|
||||
#include "system/memory.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "qemu/event_notifier.h"
|
||||
#include "qemu/main-loop.h"
|
||||
#include "trace.h"
|
||||
@@ -756,7 +758,7 @@ static void kvm_slot_sync_dirty_pages(KVMSlot *slot)
|
||||
ram_addr_t start = slot->ram_start_offset;
|
||||
ram_addr_t pages = slot->memory_size / qemu_real_host_page_size();
|
||||
|
||||
cpu_physical_memory_set_dirty_lebitmap(slot->dirty_bmap, start, pages);
|
||||
physical_memory_set_dirty_lebitmap(slot->dirty_bmap, start, pages);
|
||||
}
|
||||
|
||||
static void kvm_slot_reset_dirty_pages(KVMSlot *slot)
|
||||
|
||||
+7
-6
@@ -25,6 +25,7 @@
|
||||
#include "accel/tcg/probe.h"
|
||||
#include "exec/page-protection.h"
|
||||
#include "system/memory.h"
|
||||
#include "system/physmem.h"
|
||||
#include "accel/tcg/cpu-ldst-common.h"
|
||||
#include "accel/tcg/cpu-mmu-index.h"
|
||||
#include "exec/cputlb.h"
|
||||
@@ -858,7 +859,7 @@ void tlb_flush_page_bits_by_mmuidx_all_cpus_synced(CPUState *src_cpu,
|
||||
can be detected */
|
||||
void tlb_protect_code(ram_addr_t ram_addr)
|
||||
{
|
||||
cpu_physical_memory_test_and_clear_dirty(ram_addr & TARGET_PAGE_MASK,
|
||||
physical_memory_test_and_clear_dirty(ram_addr & TARGET_PAGE_MASK,
|
||||
TARGET_PAGE_SIZE,
|
||||
DIRTY_MEMORY_CODE);
|
||||
}
|
||||
@@ -867,7 +868,7 @@ void tlb_protect_code(ram_addr_t ram_addr)
|
||||
tested for self modifying code */
|
||||
void tlb_unprotect_code(ram_addr_t ram_addr)
|
||||
{
|
||||
cpu_physical_memory_set_dirty_flag(ram_addr, DIRTY_MEMORY_CODE);
|
||||
physical_memory_set_dirty_flag(ram_addr, DIRTY_MEMORY_CODE);
|
||||
}
|
||||
|
||||
|
||||
@@ -1085,7 +1086,7 @@ void tlb_set_page_full(CPUState *cpu, int mmu_idx,
|
||||
if (prot & PAGE_WRITE) {
|
||||
if (section->readonly) {
|
||||
write_flags |= TLB_DISCARD_WRITE;
|
||||
} else if (cpu_physical_memory_is_clean(iotlb)) {
|
||||
} else if (physical_memory_is_clean(iotlb)) {
|
||||
write_flags |= TLB_NOTDIRTY;
|
||||
}
|
||||
}
|
||||
@@ -1341,7 +1342,7 @@ static void notdirty_write(CPUState *cpu, vaddr mem_vaddr, unsigned size,
|
||||
|
||||
trace_memory_notdirty_write_access(mem_vaddr, ram_addr, size);
|
||||
|
||||
if (!cpu_physical_memory_get_dirty_flag(ram_addr, DIRTY_MEMORY_CODE)) {
|
||||
if (!physical_memory_get_dirty_flag(ram_addr, DIRTY_MEMORY_CODE)) {
|
||||
tb_invalidate_phys_range_fast(cpu, ram_addr, size, retaddr);
|
||||
}
|
||||
|
||||
@@ -1349,10 +1350,10 @@ static void notdirty_write(CPUState *cpu, vaddr mem_vaddr, unsigned size,
|
||||
* Set both VGA and migration bits for simplicity and to remove
|
||||
* the notdirty callback faster.
|
||||
*/
|
||||
cpu_physical_memory_set_dirty_range(ram_addr, size, DIRTY_CLIENTS_NOCODE);
|
||||
physical_memory_set_dirty_range(ram_addr, size, DIRTY_CLIENTS_NOCODE);
|
||||
|
||||
/* We remove the notdirty callback only if the code has been flushed. */
|
||||
if (!cpu_physical_memory_is_clean(ram_addr)) {
|
||||
if (!physical_memory_is_clean(ram_addr)) {
|
||||
trace_memory_notdirty_set_dirty(mem_vaddr);
|
||||
tlb_set_dirty(cpu, mem_vaddr);
|
||||
}
|
||||
|
||||
@@ -460,10 +460,8 @@ For new code they are better avoided:
|
||||
|
||||
``cpu_physical_memory_write``
|
||||
|
||||
``cpu_physical_memory_rw``
|
||||
|
||||
Regexes for git grep:
|
||||
- ``\<cpu_physical_memory_\(read\|write\|rw\)\>``
|
||||
- ``\<cpu_physical_memory_\(read\|write\)\>``
|
||||
|
||||
``cpu_memory_rw_debug``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -474,7 +472,7 @@ This function is intended for use by the GDB stub and similar code.
|
||||
It takes a virtual address, converts it to a physical address via
|
||||
an MMU lookup using the current settings of the specified CPU,
|
||||
and then performs the access (using ``address_space_rw`` for
|
||||
reads or ``cpu_physical_memory_write_rom`` for writes).
|
||||
reads or ``address_space_write_rom`` for writes).
|
||||
This means that if the access is a write to a ROM then this
|
||||
function will modify the contents (whereas a normal guest CPU access
|
||||
would ignore the write attempt).
|
||||
|
||||
+1
-1
@@ -1242,7 +1242,7 @@ static void rom_reset(void *unused)
|
||||
* that the instruction cache for that new region is clear, so that the
|
||||
* CPU definitely fetches its instructions from the just written data.
|
||||
*/
|
||||
cpu_flush_icache_range(rom->addr, rom->datasize);
|
||||
address_space_flush_icache_range(rom->as, rom->addr, rom->datasize);
|
||||
|
||||
trace_loader_write_rom(rom->name, rom->addr, rom->datasize, rom->isrom);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "system/ramblock.h"
|
||||
#include "hv-balloon-internal.h"
|
||||
#include "hv-balloon-our_range_memslots.h"
|
||||
#include "trace.h"
|
||||
|
||||
@@ -77,7 +77,6 @@
|
||||
#include "hw/virtio/virtio-scsi.h"
|
||||
#include "hw/virtio/vhost-scsi-common.h"
|
||||
|
||||
#include "system/ram_addr.h"
|
||||
#include "system/confidential-guest-support.h"
|
||||
#include "hw/usb.h"
|
||||
#include "qemu/config-file.h"
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
#include "qapi/error.h"
|
||||
#include "qapi/visitor.h"
|
||||
#include "system/hw_accel.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "target/ppc/cpu.h"
|
||||
#include "target/ppc/mmu-hash64.h"
|
||||
#include "cpu-models.h"
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
#include "hw/pci/pci_host.h"
|
||||
#include "hw/ppc/spapr.h"
|
||||
#include "hw/pci-host/spapr.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include <libfdt.h>
|
||||
#include "trace.h"
|
||||
#include "qemu/error-report.h"
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
#include "hw/remote/memory.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "qapi/error.h"
|
||||
|
||||
static void remote_sysmem_reset(void)
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
#include "qemu/range.h"
|
||||
#include "system/memory.h"
|
||||
#include "exec/cpu-common.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "hw/remote/mpqemu-link.h"
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "exec/target_page.h"
|
||||
#include "hw/s390x/s390-virtio-ccw.h"
|
||||
#include "migration/qemu-file.h"
|
||||
#include "hw/s390x/storage-attributes.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "system/kvm.h"
|
||||
#include "system/memory_mapping.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "kvm/kvm_s390x.h"
|
||||
#include "qapi/error.h"
|
||||
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/units.h"
|
||||
#include "exec/target_page.h"
|
||||
#include "migration/qemu-file.h"
|
||||
#include "migration/register.h"
|
||||
#include "hw/qdev-properties.h"
|
||||
#include "hw/s390x/storage-attributes.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qobject/qdict.h"
|
||||
#include "cpu.h"
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "system/confidential-guest-support.h"
|
||||
#include "hw/boards.h"
|
||||
#include "hw/s390x/sclp.h"
|
||||
|
||||
+7
-5
@@ -16,6 +16,7 @@
|
||||
#include "qemu/units.h"
|
||||
#include "qapi/error.h"
|
||||
#include "hw/boards.h"
|
||||
#include "system/memory.h"
|
||||
#include "hw/s390x/sclp.h"
|
||||
#include "hw/s390x/event-facility.h"
|
||||
#include "hw/s390x/s390-pci-bus.h"
|
||||
@@ -303,12 +304,14 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
|
||||
SCLPDeviceClass *sclp_c = SCLP_GET_CLASS(sclp);
|
||||
SCCBHeader header;
|
||||
g_autofree SCCB *work_sccb = NULL;
|
||||
AddressSpace *as = CPU(cpu)->as;
|
||||
const MemTxAttrs attrs = MEMTXATTRS_UNSPECIFIED;
|
||||
|
||||
/* first some basic checks on program checks */
|
||||
if (env->psw.mask & PSW_MASK_PSTATE) {
|
||||
return -PGM_PRIVILEGED;
|
||||
}
|
||||
if (cpu_physical_memory_is_io(sccb)) {
|
||||
if (address_space_is_io(CPU(cpu)->as, sccb)) {
|
||||
return -PGM_ADDRESSING;
|
||||
}
|
||||
if ((sccb & ~0x1fffUL) == 0 || (sccb & ~0x1fffUL) == env->psa
|
||||
@@ -317,7 +320,7 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
|
||||
}
|
||||
|
||||
/* the header contains the actual length of the sccb */
|
||||
cpu_physical_memory_read(sccb, &header, sizeof(SCCBHeader));
|
||||
address_space_read(as, sccb, attrs, &header, sizeof(SCCBHeader));
|
||||
|
||||
/* Valid sccb sizes */
|
||||
if (be16_to_cpu(header.length) < sizeof(SCCBHeader)) {
|
||||
@@ -330,7 +333,7 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
|
||||
* the host has checked the values
|
||||
*/
|
||||
work_sccb = g_malloc0(be16_to_cpu(header.length));
|
||||
cpu_physical_memory_read(sccb, work_sccb, be16_to_cpu(header.length));
|
||||
address_space_read(as, sccb, attrs, work_sccb, be16_to_cpu(header.length));
|
||||
|
||||
if (!sclp_command_code_valid(code)) {
|
||||
work_sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_SCLP_COMMAND);
|
||||
@@ -344,8 +347,7 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
|
||||
|
||||
sclp_c->execute(sclp, work_sccb, code);
|
||||
out_write:
|
||||
cpu_physical_memory_write(sccb, work_sccb,
|
||||
be16_to_cpu(work_sccb->h.length));
|
||||
address_space_write(as, sccb, attrs, work_sccb, be16_to_cpu(header.length));
|
||||
|
||||
sclp_c->service_interrupt(sclp, sccb);
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "hw/vfio/vfio-device.h"
|
||||
#include "system/address-spaces.h"
|
||||
#include "system/memory.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "system/physmem.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qemu/range.h"
|
||||
#include "system/reset.h"
|
||||
@@ -92,7 +92,7 @@ static int vfio_dma_unmap_bitmap(const VFIOLegacyContainer *container,
|
||||
bitmap = (struct vfio_bitmap *)&unmap->data;
|
||||
|
||||
/*
|
||||
* cpu_physical_memory_set_dirty_lebitmap() supports pages in bitmap of
|
||||
* physical_memory_set_dirty_lebitmap() supports pages in bitmap of
|
||||
* qemu_real_host_page_size to mark those dirty. Hence set bitmap_pgsize
|
||||
* to qemu_real_host_page_size.
|
||||
*/
|
||||
@@ -108,7 +108,7 @@ static int vfio_dma_unmap_bitmap(const VFIOLegacyContainer *container,
|
||||
|
||||
ret = ioctl(container->fd, VFIO_IOMMU_UNMAP_DMA, unmap);
|
||||
if (!ret) {
|
||||
cpu_physical_memory_set_dirty_lebitmap(vbmap.bitmap,
|
||||
physical_memory_set_dirty_lebitmap(vbmap.bitmap,
|
||||
iotlb->translated_addr, vbmap.pages);
|
||||
} else {
|
||||
error_report("VFIO_UNMAP_DMA with DIRTY_BITMAP : %m");
|
||||
@@ -266,7 +266,7 @@ static int vfio_legacy_query_dirty_bitmap(const VFIOContainer *bcontainer,
|
||||
range->size = size;
|
||||
|
||||
/*
|
||||
* cpu_physical_memory_set_dirty_lebitmap() supports pages in bitmap of
|
||||
* physical_memory_set_dirty_lebitmap() supports pages in bitmap of
|
||||
* qemu_real_host_page_size to mark those dirty. Hence set bitmap's pgsize
|
||||
* to qemu_real_host_page_size.
|
||||
*/
|
||||
@@ -485,7 +485,7 @@ static void vfio_get_iommu_info_migration(VFIOLegacyContainer *container,
|
||||
header);
|
||||
|
||||
/*
|
||||
* cpu_physical_memory_set_dirty_lebitmap() supports pages in bitmap of
|
||||
* physical_memory_set_dirty_lebitmap() supports pages in bitmap of
|
||||
* qemu_real_host_page_size to mark those dirty.
|
||||
*/
|
||||
if (cap_mig->pgsize_bitmap & qemu_real_host_page_size()) {
|
||||
|
||||
+3
-2
@@ -20,6 +20,7 @@
|
||||
#include "qemu/error-report.h"
|
||||
#include "hw/vfio/vfio-container.h"
|
||||
#include "hw/vfio/vfio-device.h" /* vfio_device_reset_handler */
|
||||
#include "system/physmem.h"
|
||||
#include "system/reset.h"
|
||||
#include "vfio-helpers.h"
|
||||
|
||||
@@ -255,7 +256,7 @@ int vfio_container_query_dirty_bitmap(const VFIOContainer *bcontainer,
|
||||
int ret;
|
||||
|
||||
if (!bcontainer->dirty_pages_supported && !all_device_dirty_tracking) {
|
||||
cpu_physical_memory_set_dirty_range(translated_addr, size,
|
||||
physical_memory_set_dirty_range(translated_addr, size,
|
||||
tcg_enabled() ? DIRTY_CLIENTS_ALL :
|
||||
DIRTY_CLIENTS_NOCODE);
|
||||
return 0;
|
||||
@@ -280,7 +281,7 @@ int vfio_container_query_dirty_bitmap(const VFIOContainer *bcontainer,
|
||||
goto out;
|
||||
}
|
||||
|
||||
dirty_pages = cpu_physical_memory_set_dirty_lebitmap(vbmap.bitmap,
|
||||
dirty_pages = physical_memory_set_dirty_lebitmap(vbmap.bitmap,
|
||||
translated_addr,
|
||||
vbmap.pages);
|
||||
|
||||
|
||||
+1
-1
@@ -25,11 +25,11 @@
|
||||
#endif
|
||||
#include <linux/vfio.h>
|
||||
|
||||
#include "exec/target_page.h"
|
||||
#include "hw/vfio/vfio-device.h"
|
||||
#include "hw/vfio/pci.h"
|
||||
#include "system/address-spaces.h"
|
||||
#include "system/memory.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "hw/hw.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qemu/main-loop.h"
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
#include "hw/vfio/vfio-container-legacy.h"
|
||||
#include "hw/hw.h"
|
||||
#include "system/ram_addr.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qapi/error.h"
|
||||
#include "trace.h"
|
||||
|
||||
+5
-2
@@ -27,6 +27,7 @@
|
||||
#include "migration/blocker.h"
|
||||
#include "migration/qemu-file-types.h"
|
||||
#include "system/dma.h"
|
||||
#include "system/memory.h"
|
||||
#include "trace.h"
|
||||
|
||||
/* enabled until disconnected backend stabilizes */
|
||||
@@ -455,7 +456,8 @@ static void *vhost_memory_map(struct vhost_dev *dev, hwaddr addr,
|
||||
hwaddr *plen, bool is_write)
|
||||
{
|
||||
if (!vhost_dev_has_iommu(dev)) {
|
||||
return cpu_physical_memory_map(addr, plen, is_write);
|
||||
return address_space_map(dev->vdev->dma_as, addr, plen, is_write,
|
||||
MEMTXATTRS_UNSPECIFIED);
|
||||
} else {
|
||||
return (void *)(uintptr_t)addr;
|
||||
}
|
||||
@@ -466,7 +468,8 @@ static void vhost_memory_unmap(struct vhost_dev *dev, void *buffer,
|
||||
hwaddr access_len)
|
||||
{
|
||||
if (!vhost_dev_has_iommu(dev)) {
|
||||
cpu_physical_memory_unmap(buffer, len, is_write, access_len);
|
||||
address_space_unmap(dev->vdev->dma_as, buffer, len, is_write,
|
||||
access_len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user