cuse(3): Remove PAGE_SIZE from libcuse.
To allow for a dynamic page size on arm64 remove the static value from libcuse. Differential Revision: https://reviews.freebsd.org/D35585 MFC after: 1 week Sponsored by: NVIDIA Networking
This commit is contained in:
parent
6c4b6f55f7
commit
2c28cd09d9
@ -1,6 +1,6 @@
|
|||||||
/* $FreeBSD$ */
|
/* $FreeBSD$ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2010-2012 Hans Petter Selasky. All rights reserved.
|
* Copyright (c) 2010-2022 Hans Petter Selasky. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -142,7 +142,7 @@ cuse_vmoffset(void *_ptr)
|
|||||||
uint8_t *ptr_max;
|
uint8_t *ptr_max;
|
||||||
uint8_t *ptr = _ptr;
|
uint8_t *ptr = _ptr;
|
||||||
unsigned long remainder;
|
unsigned long remainder;
|
||||||
int n;
|
unsigned long n;
|
||||||
|
|
||||||
CUSE_LOCK();
|
CUSE_LOCK();
|
||||||
for (n = 0; n != CUSE_ALLOC_UNIT_MAX; n++) {
|
for (n = 0; n != CUSE_ALLOC_UNIT_MAX; n++) {
|
||||||
@ -158,9 +158,10 @@ cuse_vmoffset(void *_ptr)
|
|||||||
|
|
||||||
remainder = (ptr - ptr_min);
|
remainder = (ptr - ptr_min);
|
||||||
|
|
||||||
remainder -= remainder % PAGE_SIZE;
|
remainder -= remainder %
|
||||||
|
(unsigned long)getpagesize();
|
||||||
|
|
||||||
return ((n * PAGE_SIZE * CUSE_ALLOC_PAGES_MAX) + remainder);
|
return ((n * CUSE_ALLOC_BYTES_MAX) + remainder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CUSE_UNLOCK();
|
CUSE_UNLOCK();
|
||||||
@ -172,9 +173,10 @@ void *
|
|||||||
cuse_vmalloc(int size)
|
cuse_vmalloc(int size)
|
||||||
{
|
{
|
||||||
struct cuse_alloc_info info;
|
struct cuse_alloc_info info;
|
||||||
|
unsigned long pgsize;
|
||||||
|
unsigned long n;
|
||||||
void *ptr;
|
void *ptr;
|
||||||
int error;
|
int error;
|
||||||
int n;
|
|
||||||
|
|
||||||
if (f_cuse < 0)
|
if (f_cuse < 0)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
@ -184,7 +186,8 @@ cuse_vmalloc(int size)
|
|||||||
if (size < 1)
|
if (size < 1)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
info.page_count = howmany(size, PAGE_SIZE);
|
pgsize = getpagesize();
|
||||||
|
info.page_count = howmany(size, pgsize);
|
||||||
|
|
||||||
CUSE_LOCK();
|
CUSE_LOCK();
|
||||||
for (n = 0; n != CUSE_ALLOC_UNIT_MAX; n++) {
|
for (n = 0; n != CUSE_ALLOC_UNIT_MAX; n++) {
|
||||||
@ -212,10 +215,9 @@ cuse_vmalloc(int size)
|
|||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ptr = mmap(NULL, info.page_count * PAGE_SIZE,
|
ptr = mmap(NULL, info.page_count * pgsize,
|
||||||
PROT_READ | PROT_WRITE,
|
PROT_READ | PROT_WRITE,
|
||||||
MAP_SHARED, f_cuse, CUSE_ALLOC_PAGES_MAX *
|
MAP_SHARED, f_cuse, CUSE_ALLOC_BYTES_MAX * n);
|
||||||
PAGE_SIZE * n);
|
|
||||||
|
|
||||||
if (ptr == MAP_FAILED) {
|
if (ptr == MAP_FAILED) {
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* $FreeBSD$ */
|
/* $FreeBSD$ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2010-2020 Hans Petter Selasky. All rights reserved.
|
* Copyright (c) 2010-2022 Hans Petter Selasky. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -64,6 +64,13 @@
|
|||||||
#include <fs/cuse/cuse_defs.h>
|
#include <fs/cuse/cuse_defs.h>
|
||||||
#include <fs/cuse/cuse_ioctl.h>
|
#include <fs/cuse/cuse_ioctl.h>
|
||||||
|
|
||||||
|
#define CUSE_ALLOC_PAGES_MAX \
|
||||||
|
(CUSE_ALLOC_BYTES_MAX / PAGE_SIZE)
|
||||||
|
|
||||||
|
#if (CUSE_ALLOC_PAGES_MAX == 0)
|
||||||
|
#error "PAGE_SIZE is too big!"
|
||||||
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
cuse_modevent(module_t mod, int type, void *data)
|
cuse_modevent(module_t mod, int type, void *data)
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* $FreeBSD$ */
|
/* $FreeBSD$ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2014 Hans Petter Selasky. All rights reserved.
|
* Copyright (c) 2014-2022 Hans Petter Selasky. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -30,13 +30,13 @@
|
|||||||
#include <sys/ioccom.h>
|
#include <sys/ioccom.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#define CUSE_BUFFER_MAX PAGE_SIZE
|
#define CUSE_BUFFER_MAX (1 << 12) /* bytes */
|
||||||
#define CUSE_DEVICES_MAX 64 /* units */
|
#define CUSE_DEVICES_MAX 64 /* units */
|
||||||
#define CUSE_BUF_MIN_PTR 0x10000UL
|
#define CUSE_BUF_MIN_PTR 0x10000UL
|
||||||
#define CUSE_BUF_MAX_PTR 0x20000UL
|
#define CUSE_BUF_MAX_PTR 0x20000UL
|
||||||
#define CUSE_ALLOC_UNIT_MAX 128 /* units */
|
#define CUSE_ALLOC_UNIT_MAX 128 /* units */
|
||||||
/* All memory allocations must be less than the following limit */
|
/* All memory allocations must be less than the following limit */
|
||||||
#define CUSE_ALLOC_PAGES_MAX (((16UL * 1024UL * 1024UL) + PAGE_SIZE - 1) / PAGE_SIZE)
|
#define CUSE_ALLOC_BYTES_MAX (1UL << 24) /* bytes */
|
||||||
|
|
||||||
struct cuse_dev;
|
struct cuse_dev;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user