Print this page
6145 instead using SEGOP_* macros, define full-fledged segop_* functions

*** 20,29 **** --- 20,30 ---- */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * Copyright (c) 2015, Joyent, Inc. + * Copyright 2015, Josef 'Jeff' Sipek <jeffpc@josefsipek.net> */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */
*** 1860,1864 **** --- 1861,2021 ---- int seg_inherit_notsup(struct seg *seg, caddr_t addr, size_t len, uint_t op) { return (ENOTSUP); } + + /* + * segop wrappers + */ + int + segop_dup(struct seg *seg, struct seg *new) + { + return (seg->s_ops->dup(seg, new)); + } + + int + segop_unmap(struct seg *seg, caddr_t addr, size_t len) + { + return (seg->s_ops->unmap(seg, addr, len)); + } + + void + segop_free(struct seg *seg) + { + seg->s_ops->free(seg); + } + + faultcode_t + segop_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, + enum fault_type type, enum seg_rw rw) + { + return (seg->s_ops->fault(hat, seg, addr, len, type, rw)); + } + + faultcode_t + segop_faulta(struct seg *seg, caddr_t addr) + { + return (seg->s_ops->faulta(seg, addr)); + } + + int + segop_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) + { + return (seg->s_ops->setprot(seg, addr, len, prot)); + } + + int + segop_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) + { + return (seg->s_ops->checkprot(seg, addr, len, prot)); + } + + int + segop_kluster(struct seg *seg, caddr_t addr, ssize_t d) + { + return (seg->s_ops->kluster(seg, addr, d)); + } + + size_t + segop_swapout(struct seg *seg) + { + return (seg->s_ops->swapout(seg)); + } + + int + segop_sync(struct seg *seg, caddr_t addr, size_t len, int atr, uint_t f) + { + return (seg->s_ops->sync(seg, addr, len, atr, f)); + } + + size_t + segop_incore(struct seg *seg, caddr_t addr, size_t len, char *v) + { + return (seg->s_ops->incore(seg, addr, len, v)); + } + + int + segop_lockop(struct seg *seg, caddr_t addr, size_t len, int atr, int op, + ulong_t *b, size_t p) + { + return (seg->s_ops->lockop(seg, addr, len, atr, op, b, p)); + } + + int + segop_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *p) + { + return (seg->s_ops->getprot(seg, addr, len, p)); + } + + u_offset_t + segop_getoffset(struct seg *seg, caddr_t addr) + { + return (seg->s_ops->getoffset(seg, addr)); + } + + int + segop_gettype(struct seg *seg, caddr_t addr) + { + return (seg->s_ops->gettype(seg, addr)); + } + + int + segop_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp) + { + return (seg->s_ops->getvp(seg, addr, vpp)); + } + + int + segop_advise(struct seg *seg, caddr_t addr, size_t len, uint_t b) + { + return (seg->s_ops->advise(seg, addr, len, b)); + } + + void + segop_dump(struct seg *seg) + { + seg->s_ops->dump(seg); + } + + int + segop_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***page, + enum lock_type type, enum seg_rw rw) + { + return (seg->s_ops->pagelock(seg, addr, len, page, type, rw)); + } + + int + segop_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc) + { + return (seg->s_ops->setpagesize(seg, addr, len, szc)); + } + + int + segop_getmemid(struct seg *seg, caddr_t addr, memid_t *mp) + { + return (seg->s_ops->getmemid(seg, addr, mp)); + } + + struct lgrp_mem_policy_info * + segop_getpolicy(struct seg *seg, caddr_t addr) + { + if (seg->s_ops->getpolicy == NULL) + return (NULL); + + return (seg->s_ops->getpolicy(seg, addr)); + } + + int + segop_capable(struct seg *seg, segcapability_t cap) + { + return (seg->s_ops->capable(seg, cap)); + } + + int + segop_inherit(struct seg *seg, caddr_t addr, size_t len, uint_t op) + { + if (seg->s_ops->inherit == NULL) + return (ENOTSUP); + + return (seg->s_ops->inherit(seg, addr, len, op)); + }