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

View File

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

View File

@ -27,7 +27,7 @@
#ifndef _CUSE_DEFS_H_ #ifndef _CUSE_DEFS_H_
#define _CUSE_DEFS_H_ #define _CUSE_DEFS_H_
#define CUSE_VERSION 0x000123 #define CUSE_VERSION 0x000124
#define CUSE_ERR_NONE 0 #define CUSE_ERR_NONE 0
#define CUSE_ERR_BUSY -1 #define CUSE_ERR_BUSY -1
@ -49,6 +49,7 @@
#define CUSE_FFLAG_READ 1 #define CUSE_FFLAG_READ 1
#define CUSE_FFLAG_WRITE 2 #define CUSE_FFLAG_WRITE 2
#define CUSE_FFLAG_NONBLOCK 4 #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_NONE 0
#define CUSE_DBG_FULL 1 #define CUSE_DBG_FULL 1