+mike
As per you suggestion:
({ \
typeof((dest).ptr) __dst; \
typeof((src).ptr) __src; \
static_assert( \
__builtin_types_compatible_p(__dst, __src)) || \
__builtin_types_compatible_p(__dst, void *) || \
__builtin_types_compatible_p(__src, void *), \
"pointer type mismatch in KHOSER_COPY_PTR" \
); \
(dest).phys = (src).phys; \
})
This is incorrect: as it looks for type instead of var and adding
typedef like below throws warning in checkpatch : no new typedefs.
({ \
typedef typeof((dest).ptr) __dst; \
typedef typeof((src).ptr) __src; \
static_assert( \
__builtin_types_compatible_p(__dst, __src)) || \
__builtin_types_compatible_p(__dst, void *) || \
__builtin_types_compatible_p(__src, void *), \
"pointer type mismatch in KHOSER_COPY_PTR" \
); \
(dest).phys = (src).phys; \
})
OR we can add __builtin_...(typeof(__dst), typeof(__src)), But this does
not solve the purpose of improving the readability.
So I am fine with the original, as it is more straight-forward to read.
Typeof(pointer of destination) (typeof(dst.ptr)) and so on.
~Tarun
Tarun Sahu <[email protected]> writes:
> Adding KHOSER_COPY_PTR to copy one serializeable pointer to
> another. It basically allows copy of phys val of the
> serializeable pointer.
>
> It ignores the typecheck if any of the argument is of void *
>
> Signed-off-by: Tarun Sahu <[email protected]>
> ---
> include/linux/kho/abi/kexec_handover.h | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/include/linux/kho/abi/kexec_handover.h b/include/linux/kho/abi/kexec_handover.h
> index 5e2eb8519bda..c1b61d875dcc 100644
> --- a/include/linux/kho/abi/kexec_handover.h
> +++ b/include/linux/kho/abi/kexec_handover.h
> @@ -139,6 +139,17 @@
> (typeof((s).ptr))((s).phys ? phys_to_virt((s).phys) : NULL); \
> })
>
> +/* Copies one serializable pointer to another. */
> +#define KHOSER_COPY_PTR(dest, src) \
> + ({ \
> + static_assert( \
> + __builtin_types_compatible_p(typeof((dest).ptr), typeof((src).ptr)) || \
> + __builtin_types_compatible_p(typeof((dest).ptr), void *) || \
> + __builtin_types_compatible_p(typeof((src).ptr), void *), \
> + "pointer type mismatch in KHOSER_COPY_PTR" \
> + ); \
> + (dest).phys = (src).phys; \
> + })
> /*
> * This header is embedded at the beginning of each `kho_vmalloc_chunk`
> * and contains a pointer to the next chunk in the linked list,
> --
> 2.55.0.rc0.786.g65d90a0328-goog
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.