mem.c (133035) | mem.c (133129) |
---|---|
1/*- 2 * Copyright (c) 1988 University of Utah. 3 * Copyright (c) 1982, 1986, 1990 The Regents of the University of California. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * the Systems Programming Group of the University of Utah Computer 8 * Science Department, and code derived from software contributed to --- 23 unchanged lines hidden (view full) --- 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * 35 * from: Utah $Hdr: mem.c 1.13 89/10/08$ 36 * from: @(#)mem.c 7.2 (Berkeley) 5/9/91 37 */ 38 39#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1988 University of Utah. 3 * Copyright (c) 1982, 1986, 1990 The Regents of the University of California. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * the Systems Programming Group of the University of Utah Computer 8 * Science Department, and code derived from software contributed to --- 23 unchanged lines hidden (view full) --- 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * 35 * from: Utah $Hdr: mem.c 1.13 89/10/08$ 36 * from: @(#)mem.c 7.2 (Berkeley) 5/9/91 37 */ 38 39#include <sys/cdefs.h> |
40__FBSDID("$FreeBSD: head/sys/amd64/amd64/mem.c 133035 2004-08-02 20:36:47Z markm $"); | 40__FBSDID("$FreeBSD: head/sys/amd64/amd64/mem.c 133129 2004-08-04 18:30:31Z markm $"); |
41 42/* 43 * Memory special file 44 */ 45 46#include <sys/param.h> 47#include <sys/conf.h> 48#include <sys/fcntl.h> --- 17 unchanged lines hidden (view full) --- 66#include <vm/vm_extern.h> 67 68#include <machine/memdev.h> 69 70/* 71 * Used in /dev/mem drivers and elsewhere 72 */ 73MALLOC_DEFINE(M_MEMDESC, "memdesc", "memory range descriptors"); | 41 42/* 43 * Memory special file 44 */ 45 46#include <sys/param.h> 47#include <sys/conf.h> 48#include <sys/fcntl.h> --- 17 unchanged lines hidden (view full) --- 66#include <vm/vm_extern.h> 67 68#include <machine/memdev.h> 69 70/* 71 * Used in /dev/mem drivers and elsewhere 72 */ 73MALLOC_DEFINE(M_MEMDESC, "memdesc", "memory range descriptors"); |
74struct mem_range_softc mem_range_softc; | |
75 | 74 |
76void 77mem_range_AP_init(void) 78{ 79 if (mem_range_softc.mr_op && mem_range_softc.mr_op->initAP) 80 mem_range_softc.mr_op->initAP(&mem_range_softc); 81} 82 | |
83/* ARGSUSED */ 84int 85memrw(struct cdev *dev, struct uio *uio, int flags) 86{ 87 int o; 88 u_long c = 0, v; 89 struct iovec *iov; 90 int error = 0; --- 127 unchanged lines hidden (view full) --- 218 if (error == 0) 219 error = mem_range_attr_set(md, &mo->mo_arg[0]); 220 free(md, M_MEMDESC); 221 break; 222 } 223 return (error); 224} 225 | 75/* ARGSUSED */ 76int 77memrw(struct cdev *dev, struct uio *uio, int flags) 78{ 79 int o; 80 u_long c = 0, v; 81 struct iovec *iov; 82 int error = 0; --- 127 unchanged lines hidden (view full) --- 210 if (error == 0) 211 error = mem_range_attr_set(md, &mo->mo_arg[0]); 212 free(md, M_MEMDESC); 213 break; 214 } 215 return (error); 216} 217 |
226/* 227 * Implementation-neutral, kernel-callable functions for manipulating 228 * memory range attributes. 229 */ 230int 231mem_range_attr_get(struct mem_range_desc *mrd, int *arg) 232{ 233 /* can we handle this? */ 234 if (mem_range_softc.mr_op == NULL) 235 return (EOPNOTSUPP); 236 237 if (*arg == 0) 238 *arg = mem_range_softc.mr_ndesc; 239 else 240 bcopy(mem_range_softc.mr_desc, mrd, 241 (*arg) * sizeof(struct mem_range_desc)); 242 return (0); 243} 244 245int 246mem_range_attr_set(struct mem_range_desc *mrd, int *arg) 247{ 248 /* can we handle this? */ 249 if (mem_range_softc.mr_op == NULL) 250 return (EOPNOTSUPP); 251 252 return (mem_range_softc.mr_op->set(&mem_range_softc, mrd, arg)); 253} 254 | |
255void 256dev_mem_md_init(void) 257{ 258 if (mem_range_softc.mr_op != NULL) 259 mem_range_softc.mr_op->init(&mem_range_softc); 260} | 218void 219dev_mem_md_init(void) 220{ 221 if (mem_range_softc.mr_op != NULL) 222 mem_range_softc.mr_op->init(&mem_range_softc); 223} |