[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 1/7] util: add cacheinfo
From: |
Emilio G. Cota |
Subject: |
Re: [Qemu-devel] [PATCH v4 1/7] util: add cacheinfo |
Date: |
Wed, 7 Jun 2017 18:11:56 -0400 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Wed, Jun 07, 2017 at 08:55:30 -0700, Richard Henderson wrote:
(snip)
> +#elif defined(__APPLE__) \
> + || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
> +# include <sys/sysctl.h>
> +# if defined(__APPLE__)
> +# define SYSCTL_CACHELINE_NAME "hw.cachelinesize"
> +# else
> +# define SYSCTL_CACHELINE_NAME "machdep.cacheline_size"
> +# endif
> +
> +static void sys_cache_info(void)
> +{
> + /* There's only a single sysctl for both I/D cache line sizes. */
> + size_t len = sizeof(qemu_icache_linesize);
> + if (!sysctlbyname(SYSCTL_CACHELINE_NAME, &qemu_icache_linesize,
> + &len, NULL, 0)) {
> + qemu_dcache_linesize = qemu_icache_linesize;
> + }
> +}
This doesn't work on the MacOS (Darwin 16.6.0) I have access to.
If we do
long size; // <-- type here matters!
size_t len = sizeof(size);
sysctlbyname(..., &size, &len, ...);
then size == 64.
However, if instead of 'long size' we have 'int size' (as in the patch),
then 'size == 1' yet sysctlbyname still returns 0. (!)
This is why I was using an intermediate long in my previous patch,
although obviously a comment there would have been appropriate.
FWIW, if we query what length sysctlbyname expects for this param (by
calling sysctlbyname(NAME, NULL, &size, NULL, 0), we get len == 8;
I presume on both 32 and 64-bit systems passing a long will work
OK here.
E.
- [Qemu-devel] [PATCH v4 0/7] tcg: allocate TB structs preceding translate, Richard Henderson, 2017/06/07
- [Qemu-devel] [PATCH v4 1/7] util: add cacheinfo, Richard Henderson, 2017/06/07
- Re: [Qemu-devel] [PATCH v4 1/7] util: add cacheinfo,
Emilio G. Cota <=
- [Qemu-devel] [PATCH v4 2/7] tcg: allocate TB structs before the corresponding translated code, Richard Henderson, 2017/06/07
- [Qemu-devel] [PATCH v4 3/7] tcg/aarch64: Use ADR in tcg_out_movi, Richard Henderson, 2017/06/07
- [Qemu-devel] [PATCH v4 4/7] target/arm: Use indirect branch for goto_tb, Richard Henderson, 2017/06/07
- [Qemu-devel] [PATCH v4 5/7] target/arm: Remove limit on code buffer size, Richard Henderson, 2017/06/07
- [Qemu-devel] [PATCH v4 6/7] target/arm: Try pc-relative addresses for movi, Richard Henderson, 2017/06/07
- [Qemu-devel] [PATCH v4 7/7] target/arm: Use ldr (literal) for goto_tb, Richard Henderson, 2017/06/07
- Re: [Qemu-devel] [PATCH v4 0/7] tcg: allocate TB structs preceding translate, no-reply, 2017/06/07
- Re: [Qemu-devel] [PATCH v4 0/7] tcg: allocate TB structs preceding translate, Emilio G. Cota, 2017/06/07