Print this page
instead using SEGOP_* macros, define full-fledged segop_* functions
This will allow us to do some sanity checking or even implement stub
functionality in one place instead of duplicating it wherever these wrappers
are used.


1845         struct segvn_data *svd;
1846         size_t swap = 0;
1847 
1848         if (seg->s_ops == &segvn_ops) {
1849                 svd = (struct segvn_data *)seg->s_data;
1850                 if (svd->type == MAP_PRIVATE && svd->swresv > 0)
1851                         swap = svd->swresv;
1852         }
1853         return (swap);
1854 }
1855 
1856 /*
1857  * General not supported function for SEGOP_INHERIT
1858  */
1859 /* ARGSUSED */
1860 int
1861 seg_inherit_notsup(struct seg *seg, caddr_t addr, size_t len, uint_t op)
1862 {
1863         return (ENOTSUP);
1864 }


































































































































































































1845         struct segvn_data *svd;
1846         size_t swap = 0;
1847 
1848         if (seg->s_ops == &segvn_ops) {
1849                 svd = (struct segvn_data *)seg->s_data;
1850                 if (svd->type == MAP_PRIVATE && svd->swresv > 0)
1851                         swap = svd->swresv;
1852         }
1853         return (swap);
1854 }
1855 
1856 /*
1857  * General not supported function for SEGOP_INHERIT
1858  */
1859 /* ARGSUSED */
1860 int
1861 seg_inherit_notsup(struct seg *seg, caddr_t addr, size_t len, uint_t op)
1862 {
1863         return (ENOTSUP);
1864 }
1865 
1866 /*
1867  * segop wrappers
1868  */
1869 int
1870 segop_dup(struct seg *seg, struct seg *new)
1871 {
1872         VERIFY3P(seg->s_ops->dup, !=, NULL);
1873 
1874         return (seg->s_ops->dup(seg, new));
1875 }
1876 
1877 int
1878 segop_unmap(struct seg *seg, caddr_t addr, size_t len)
1879 {
1880         VERIFY3P(seg->s_ops->unmap, !=, NULL);
1881 
1882         return (seg->s_ops->unmap(seg, addr, len));
1883 }
1884 
1885 void
1886 segop_free(struct seg *seg)
1887 {
1888         VERIFY3P(seg->s_ops->free, !=, NULL);
1889 
1890         seg->s_ops->free(seg);
1891 }
1892 
1893 faultcode_t
1894 segop_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len,
1895     enum fault_type type, enum seg_rw rw)
1896 {
1897         VERIFY3P(seg->s_ops->fault, !=, NULL);
1898 
1899         return (seg->s_ops->fault(hat, seg, addr, len, type, rw));
1900 }
1901 
1902 faultcode_t
1903 segop_faulta(struct seg *seg, caddr_t addr)
1904 {
1905         VERIFY3P(seg->s_ops->faulta, !=, NULL);
1906 
1907         return (seg->s_ops->faulta(seg, addr));
1908 }
1909 
1910 int
1911 segop_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot)
1912 {
1913         VERIFY3P(seg->s_ops->setprot, !=, NULL);
1914 
1915         return (seg->s_ops->setprot(seg, addr, len, prot));
1916 }
1917 
1918 int
1919 segop_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot)
1920 {
1921         VERIFY3P(seg->s_ops->checkprot, !=, NULL);
1922 
1923         return (seg->s_ops->checkprot(seg, addr, len, prot));
1924 }
1925 
1926 int
1927 segop_kluster(struct seg *seg, caddr_t addr, ssize_t d)
1928 {
1929         VERIFY3P(seg->s_ops->kluster, !=, NULL);
1930 
1931         return (seg->s_ops->kluster(seg, addr, d));
1932 }
1933 
1934 int
1935 segop_sync(struct seg *seg, caddr_t addr, size_t len, int atr, uint_t f)
1936 {
1937         VERIFY3P(seg->s_ops->sync, !=, NULL);
1938 
1939         return (seg->s_ops->sync(seg, addr, len, atr, f));
1940 }
1941 
1942 size_t
1943 segop_incore(struct seg *seg, caddr_t addr, size_t len, char *v)
1944 {
1945         VERIFY3P(seg->s_ops->incore, !=, NULL);
1946 
1947         return (seg->s_ops->incore(seg, addr, len, v));
1948 }
1949 
1950 int
1951 segop_lockop(struct seg *seg, caddr_t addr, size_t len, int atr, int op,
1952     ulong_t *b, size_t p)
1953 {
1954         VERIFY3P(seg->s_ops->lockop, !=, NULL);
1955 
1956         return (seg->s_ops->lockop(seg, addr, len, atr, op, b, p));
1957 }
1958 
1959 int
1960 segop_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *p)
1961 {
1962         VERIFY3P(seg->s_ops->getprot, !=, NULL);
1963 
1964         return (seg->s_ops->getprot(seg, addr, len, p));
1965 }
1966 
1967 u_offset_t
1968 segop_getoffset(struct seg *seg, caddr_t addr)
1969 {
1970         VERIFY3P(seg->s_ops->getoffset, !=, NULL);
1971 
1972         return (seg->s_ops->getoffset(seg, addr));
1973 }
1974 
1975 int
1976 segop_gettype(struct seg *seg, caddr_t addr)
1977 {
1978         VERIFY3P(seg->s_ops->gettype, !=, NULL);
1979 
1980         return (seg->s_ops->gettype(seg, addr));
1981 }
1982 
1983 int
1984 segop_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp)
1985 {
1986         VERIFY3P(seg->s_ops->getvp, !=, NULL);
1987 
1988         return (seg->s_ops->getvp(seg, addr, vpp));
1989 }
1990 
1991 int
1992 segop_advise(struct seg *seg, caddr_t addr, size_t len, uint_t b)
1993 {
1994         VERIFY3P(seg->s_ops->advise, !=, NULL);
1995 
1996         return (seg->s_ops->advise(seg, addr, len, b));
1997 }
1998 
1999 void
2000 segop_dump(struct seg *seg)
2001 {
2002         VERIFY3P(seg->s_ops->dump, !=, NULL);
2003 
2004         seg->s_ops->dump(seg);
2005 }
2006 
2007 int
2008 segop_pagelock(struct seg *seg, caddr_t addr, size_t len, struct page ***page,
2009     enum lock_type type, enum seg_rw rw)
2010 {
2011         VERIFY3P(seg->s_ops->pagelock, !=, NULL);
2012 
2013         return (seg->s_ops->pagelock(seg, addr, len, page, type, rw));
2014 }
2015 
2016 int
2017 segop_setpagesize(struct seg *seg, caddr_t addr, size_t len, uint_t szc)
2018 {
2019         VERIFY3P(seg->s_ops->setpagesize, !=, NULL);
2020 
2021         return (seg->s_ops->setpagesize(seg, addr, len, szc));
2022 }
2023 
2024 int
2025 segop_getmemid(struct seg *seg, caddr_t addr, memid_t *mp)
2026 {
2027         VERIFY3P(seg->s_ops->getmemid, !=, NULL);
2028 
2029         return (seg->s_ops->getmemid(seg, addr, mp));
2030 }
2031 
2032 struct lgrp_mem_policy_info *
2033 segop_getpolicy(struct seg *seg, caddr_t addr)
2034 {
2035         if (seg->s_ops->getpolicy == NULL)
2036                 return (NULL);
2037 
2038         return (seg->s_ops->getpolicy(seg, addr));
2039 }
2040 
2041 int
2042 segop_capable(struct seg *seg, segcapability_t cap)
2043 {
2044         VERIFY3P(seg->s_ops->capable, !=, NULL);
2045 
2046         return (seg->s_ops->capable(seg, cap));
2047 }
2048 
2049 int
2050 segop_inherit(struct seg *seg, caddr_t addr, size_t len, uint_t op)
2051 {
2052         if (seg->s_ops->inherit == NULL)
2053                 return (ENOTSUP);
2054 
2055         return (seg->s_ops->inherit(seg, addr, len, op));
2056 }