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.

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/vm/vm_seg.c
          +++ new/usr/src/uts/common/vm/vm_seg.c
↓ open down ↓ 1854 lines elided ↑ open up ↑
1855 1855  
1856 1856  /*
1857 1857   * General not supported function for SEGOP_INHERIT
1858 1858   */
1859 1859  /* ARGSUSED */
1860 1860  int
1861 1861  seg_inherit_notsup(struct seg *seg, caddr_t addr, size_t len, uint_t op)
1862 1862  {
1863 1863          return (ENOTSUP);
1864 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 +}
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX