Lines Matching +full:len +full:- +full:or +full:- +full:define

4  *  This program is free software; you can redistribute it and/or modify
6 * the Free Software Foundation; either version 2 of the License, or
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 #define QEMU_H
25 #include "accel/tcg/cpu-ldst.h"
29 #include "user/page-protection.h"
42 #include "exec/page-protection.h"
43 #include "accel/tcg/vcpu-state.h"
45 #include "qemu-os.h"
51 #define HOST_PAGE_ALIGN(addr) ROUND_UP((addr), qemu_host_page_size)
85 pid_t ts_tid; /* tid (or pid) of this task */
99 * handle a pending signal or unblock signals).
131 * maximum env+arg in 32-bit environments, bump it up to 512k for !ILP32
135 #define TARGET_ARG_MAX (512 * KiB)
137 #define TARGET_ARG_MAX (256 * KiB)
139 #define MAX_ARG_PAGES (TARGET_ARG_MAX / TARGET_PAGE_SIZE)
174 unsigned long len);
230 * --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
236 int target_msync(abi_ulong start, abi_ulong len, int flags);
248 /* os-syscall.c */
253 /* os-proc.c */
259 /* os-sys.c */
269 #define VERIFY_READ PAGE_READ
270 #define VERIFY_WRITE (PAGE_READ | PAGE_WRITE)
281 * locked - usually with lock_user_struct().
286 * - Use __builtin_choose_expr to avoid type promotion from ?:,
287 * - Invalid sizes result in a compile time error stemming from
289 * - It's easier to use the endian-specific unaligned load/store
290 * functions than host-endian unaligned load/store plus tswapN.
291 * - The pragmas are necessary only to silence a clang false-positive
293 * - gcc has bugs in its _Pragma() support in some versions, eg
294 * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only
295 * include the warning-suppression pragmas for clang
297 #if defined(__clang__) && __has_warning("-Waddress-of-packed-member")
298 #define PRAGMA_DISABLE_PACKED_WARNING \
300 _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
302 #define PRAGMA_REENABLE_PACKED_WARNING \
306 #define PRAGMA_DISABLE_PACKED_WARNING
307 #define PRAGMA_REENABLE_PACKED_WARNING
310 #define __put_user_e(x, hptr, e) \
321 #define __get_user_e(x, hptr, e) \
335 # define __put_user(x, hptr) __put_user_e(x, hptr, be)
336 # define __get_user(x, hptr) __get_user_e(x, hptr, be)
338 # define __put_user(x, hptr) __put_user_e(x, hptr, le)
339 # define __get_user(x, hptr) __get_user_e(x, hptr, le)
349 #define put_user(x, gaddr, target_type) \
359 __ret = -TARGET_EFAULT; \
363 #define get_user(x, gaddr, target_type) \
374 __ret = -TARGET_EFAULT; \
379 #define put_user_ual(x, gaddr) put_user((x), (gaddr), abi_ulong)
380 #define put_user_sal(x, gaddr) put_user((x), (gaddr), abi_long)
381 #define put_user_u64(x, gaddr) put_user((x), (gaddr), uint64_t)
382 #define put_user_s64(x, gaddr) put_user((x), (gaddr), int64_t)
383 #define put_user_u32(x, gaddr) put_user((x), (gaddr), uint32_t)
384 #define put_user_s32(x, gaddr) put_user((x), (gaddr), int32_t)
385 #define put_user_u16(x, gaddr) put_user((x), (gaddr), uint16_t)
386 #define put_user_s16(x, gaddr) put_user((x), (gaddr), int16_t)
387 #define put_user_u8(x, gaddr) put_user((x), (gaddr), uint8_t)
388 #define put_user_s8(x, gaddr) put_user((x), (gaddr), int8_t)
390 #define get_user_ual(x, gaddr) get_user((x), (gaddr), abi_ulong)
391 #define get_user_sal(x, gaddr) get_user((x), (gaddr), abi_long)
392 #define get_user_u64(x, gaddr) get_user((x), (gaddr), uint64_t)
393 #define get_user_s64(x, gaddr) get_user((x), (gaddr), int64_t)
394 #define get_user_u32(x, gaddr) get_user((x), (gaddr), uint32_t)
395 #define get_user_s32(x, gaddr) get_user((x), (gaddr), int32_t)
396 #define get_user_u16(x, gaddr) get_user((x), (gaddr), uint16_t)
397 #define get_user_s16(x, gaddr) get_user((x), (gaddr), int16_t)
398 #define get_user_u8(x, gaddr) get_user((x), (gaddr), uint8_t)
399 #define get_user_s8(x, gaddr) get_user((x), (gaddr), int8_t)
406 abi_long copy_from_user(void *hptr, abi_ulong gaddr, size_t len);
407 abi_long copy_to_user(abi_ulong gaddr, void *hptr, size_t len);
414 * memory, or a temporary buffer.
421 static inline void *lock_user(int type, abi_ulong guest_addr, long len, in lock_user() argument
424 if (!access_ok(type, guest_addr, len)) { in lock_user()
430 addr = g_malloc(len); in lock_user()
432 memcpy(addr, g2h_untagged(guest_addr), len); in lock_user()
434 memset(addr, 0, len); in lock_user()
444 * Unlock an area of guest memory. The first LEN bytes must be flushed back to
448 long len) in unlock_user() argument
458 if (len > 0) { in unlock_user()
459 memcpy(g2h_untagged(guest_addr), host_ptr, len); in unlock_user()
466 * Return the length of a string in target memory or -TARGET_EFAULT if access
474 abi_long len; in lock_user_string() local
475 len = target_strlen(guest_addr); in lock_user_string()
476 if (len < 0) { in lock_user_string()
479 return lock_user(VERIFY_READ, guest_addr, (long)(len + 1), 1); in lock_user_string()
483 #define lock_user_struct(type, host_ptr, guest_addr, copy) \
485 #define unlock_user_struct(host_ptr, guest_addr, copy) \
503 #include "user/safe-syscall.h"