return ( addr + virt_offset );
}
-static inline __always_inline userptr_t
-UACCESS_INLINE ( librm, virt_to_user ) ( volatile const void *addr ) {
- return trivial_virt_to_user ( addr );
-}
-
/******************************************************************************
*
* Access to variables in .data16 and .text16
PROVIDE_UACCESS_INLINE ( librm, phys_to_virt );
PROVIDE_UACCESS_INLINE ( librm, virt_to_phys );
-PROVIDE_UACCESS_INLINE ( librm, virt_to_user );
PROVIDE_IOMAP_INLINE ( pages, io_to_bus );
PROVIDE_IOMAP ( pages, ioremap, ioremap_pages );
PROVIDE_IOMAP ( pages, iounmap, iounmap_pages );
/* Flat address space user access API */
PROVIDE_UACCESS_INLINE ( flat, phys_to_virt );
PROVIDE_UACCESS_INLINE ( flat, virt_to_phys );
-PROVIDE_UACCESS_INLINE ( flat, virt_to_user );
*
* iPXE user access API for Linux
*
- * We run with no distinction between internal and external addresses,
- * so can use trivial_virt_to_user() et al.
- *
* We have no concept of the underlying physical addresses, since
* these are not exposed to userspace. We provide a stub
* implementation of virt_to_phys() since this is required by
return ( ( void * ) phys );
}
-static inline __always_inline userptr_t
-UACCESS_INLINE ( linux, virt_to_user ) ( volatile const void *addr ) {
- return trivial_virt_to_user ( addr );
-}
-
#endif /* _IPXE_LINUX_UACCESS_H */
#define UACCESS_PREFIX_flat __flat_
#endif
-/**
- * A pointer to a user buffer
- *
- */
-typedef void * userptr_t;
-
-/**
- * @defgroup uaccess_trivial Trivial user access API implementations
- *
- * User access API implementations that can be used by environments in
- * which virtual addresses allow access to all of memory.
- *
- * @{
- *
- */
-
-/**
- * Convert virtual address to user pointer
- *
- * @v addr Virtual address
- * @ret userptr User pointer
- */
-static inline __always_inline userptr_t
-trivial_virt_to_user ( volatile const void *addr ) {
- return ( ( userptr_t ) addr );
-}
-
-/** @} */
-
/**
* Calculate static inline user access API function name
*
return ( ( physaddr_t ) virt );
}
-static inline __always_inline userptr_t
-UACCESS_INLINE ( flat, virt_to_user ) ( volatile const void *addr ) {
- return trivial_virt_to_user ( addr );
-}
-
/* Include all architecture-independent user access API headers */
#include <ipxe/linux/linux_uaccess.h>
/* Include all architecture-dependent user access API headers */
#include <bits/uaccess.h>
-/**
- * Convert virtual address to user pointer
- *
- * @v addr Virtual address
- * @ret userptr User pointer
- */
-userptr_t virt_to_user ( volatile const void *addr );
-
/**
* Convert virtual address to a physical address
*
PROVIDE_UACCESS_INLINE(linux, phys_to_virt);
PROVIDE_UACCESS_INLINE(linux, virt_to_phys);
-PROVIDE_UACCESS_INLINE(linux, virt_to_user);