Implement flag for telling cuse(3) clients if the peer is running in 32-bit

compat mode or not. This is useful when implementing compatibility ioctl(2)
handlers in userspace.

MFC after:		1 week
Sponsored by:		Mellanox Technologies
This commit is contained in:
hselasky 2019-04-18 19:04:07 +00:00
parent 870e4adb34
commit d9340a46aa
3 changed files with 9 additions and 3 deletions

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd October 5, 2017
.Dd April 17, 2019
.Dt CUSE 3
.Os
.Sh NAME
@ -303,6 +303,7 @@ enum {
CUSE_FFLAG_READ
CUSE_FFLAG_WRITE
CUSE_FFLAG_NONBLOCK
CUSE_FFLAG_COMPAT32
CUSE_CMD_NONE
CUSE_CMD_OPEN

View File

@ -51,6 +51,7 @@
#include <sys/vnode.h>
#include <sys/selinfo.h>
#include <sys/ptrace.h>
#include <sys/sysent.h>
#include <machine/bus.h>
@ -536,7 +537,10 @@ cuse_client_send_command_locked(struct cuse_client_command *pccmd,
if (ioflag & IO_NDELAY)
cuse_fflags |= CUSE_FFLAG_NONBLOCK;
#if defined(__LP64__)
if (SV_CURPROC_FLAG(SV_ILP32))
cuse_fflags |= CUSE_FFLAG_COMPAT32;
#endif
pccmd->sub.fflags = cuse_fflags;
pccmd->sub.data_pointer = data_ptr;
pccmd->sub.argument = arg;

View File

@ -27,7 +27,7 @@
#ifndef _CUSE_DEFS_H_
#define _CUSE_DEFS_H_
#define CUSE_VERSION 0x000123
#define CUSE_VERSION 0x000124
#define CUSE_ERR_NONE 0
#define CUSE_ERR_BUSY -1
@ -49,6 +49,7 @@
#define CUSE_FFLAG_READ 1
#define CUSE_FFLAG_WRITE 2
#define CUSE_FFLAG_NONBLOCK 4
#define CUSE_FFLAG_COMPAT32 8 /* peer is running in 32-bit compat mode */
#define CUSE_DBG_NONE 0
#define CUSE_DBG_FULL 1