mirror of
https://git.openafs.org/openafs.git
synced 2025-01-22 17:00:15 +00:00
9be76c0d31
afs_NewVCache was a twisty turny maze of #ifdefs and duplicated code. This makes a number of sweeping changes to simplify this code, and to move platform specific elements out into their own directories. *) ShakeLooseVCaches is refactored so that the same code can be used both for platforms that support dynamic vcaches, and those which don't. *) afs_NewVCache, ShakeLooseVCaches, and afs_AllocVCache are all modified to remove platform specific code, and to call platform specific functions. *) A new platform file 'osi_vcache.c' is created to hold a number of platform specific vcache operations: *) osi_TryEvictVCache handles the decision of whether a vcache can be evicted or not, and does so if required *) osi_NewVnode allocates a new vnode *) osi_PrePopulateVCache does the necessary population of the vcache, before it's threaded onto the VLRUQ and associated hash tables. *) osi_AttachVnode handles attaching an OS vnode to our vcache, where that is necessary *) osi_PostPopulateVCache handles the vcache population that must occur after we're on the VLRUQ and have a vnode attached. Change-Id: I368e5fb500d012b44141aa8f8cf0516e63e58f57 Reviewed-on: http://gerrit.openafs.org/1881 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
272 lines
7.5 KiB
Plaintext
272 lines
7.5 KiB
Plaintext
# Copyright 2000, International Business Machines Corporation and others.
|
|
# All Rights Reserved.
|
|
#
|
|
# This software has been released under the terms of the IBM Public
|
|
# License. For details, see the LICENSE file in the top-level source
|
|
# directory or online at http://www.openafs.org/dl/license10.html
|
|
|
|
srcdir=@srcdir@
|
|
include @TOP_OBJDIR@/src/config/Makefile.config
|
|
INSTALL = @INSTALL@
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
|
|
|
|
# OS specific object files:
|
|
AFS_OS_OBJS = \
|
|
osi_debug.o \
|
|
osi_gcpags.o \
|
|
osi_groups.o \
|
|
osi_inode.o \
|
|
osi_file.o \
|
|
osi_misc.o \
|
|
osi_sleep.o \
|
|
osi_vcache.o \
|
|
osi_vnodeops.o \
|
|
osi_vm.o
|
|
|
|
AFS_OS_NFSOBJS = \
|
|
<ia64_hpux1123 hp_ux1123>
|
|
hpux_mod_nfs.modmeta.o \
|
|
<all>
|
|
osi_vfsops_nfs.o
|
|
|
|
AFS_OS_NONFSOBJS = \
|
|
<ia64_hpux1123 hp_ux1123>
|
|
hpux_mod.modmeta.o \
|
|
<all>
|
|
osi_vfsops.o
|
|
|
|
|
|
# System specific build commands and flags
|
|
#
|
|
# Note: the online document
|
|
#
|
|
# Developing Dynamically Loadable Kernel Modules
|
|
# Issue 1.0
|
|
# HP-UX 11.0
|
|
# October 12, 1998
|
|
#
|
|
# mentioned on http://docs.hp.com/hpux/os/index.html
|
|
# with URL http://docs.hp.com/hpux/content/dlkm_v1.2.pdf
|
|
#
|
|
# recommends the undocumented +ES1.Xindirect_calls option for both
|
|
# 32-bit and 64-bit kernel code, but it appears to be absolutely vital
|
|
# for compiling 64-bit kernel code. In 64-bit mode, the ANSI C compiler
|
|
# has the +Z (PIC) option on by default, and there is no documented way
|
|
# to turn it off. However, kernel code does not work properly when
|
|
# compiled with +Z (i.e. calling a function through a function pointer
|
|
# seems to hang). When the compiler sees the +ES1.Xindirect_calls
|
|
# option, however, it issues a warning and turns off +Z.
|
|
#
|
|
# for 11.23, see the DDK BE/Sample_makefiles/Makefile.bld
|
|
# for mod drivers.
|
|
#
|
|
# 11.23 uses new compiler, with new options. The same compiler is on pa_risc and ia64
|
|
#
|
|
<hp_ux110 hp_ux102 hp_ux11i>
|
|
KDEFS= +ES1.Xindirect_calls +XixdU +Hx0 +ESlit +ESsfc +ESssf -Wp,-H300000 -D_KERNEL -D_KERNEL_BUILD -D_UNSUPPORTED \
|
|
-DMP +R500 -Wl,+k $(CPU_KDEFS)
|
|
KDEFS_32 = +DA1.0 +DS1.0
|
|
# add +M2 to $(KDEFS_64) for 64-bit migration warnings
|
|
# warning 478: "+Z" and "+ES1.Xindirect_calls" are mutually exclusive. "+Z" ignored.
|
|
# warning 530: LP64 migration: Casting from loose to strict alignment: Resulting pointer may be misaligned.
|
|
KDEFS_64 = +DA2.0W +DS2.0 +M2 +W 478,530
|
|
|
|
<all>
|
|
|
|
<ia64_hpux1122>
|
|
KDEFS= +kernel -Wp,-H300000 -D_KERNEL -D_KERNEL_BUILD -D_UNSUPPORTED \
|
|
-DFINE_GRAINED_PROTO_FILES \
|
|
-DMP -Wl,+k $(CPU_KDEFS)
|
|
KDEFS_32 =
|
|
KDEFS_64 = +DD64
|
|
|
|
<ia64_hpux1123>
|
|
ARCH=ipf
|
|
|
|
<hp_ux1123>
|
|
ARCH=pa
|
|
|
|
<ia64_hpux1123 hp_ux1123>
|
|
|
|
CCOPTS_common= -Ae +DD64 +O2
|
|
|
|
IDENTS_common= -DACLS -DAUDIT -DHPONCPLUS -DIDDS -DIPSEC -DIVT_INTERCEPT \
|
|
-DLWSYSCALL -DPGPROF -DSTCP -D_CLEAN_BE -D_HPUX_SOURCE -D_KERNEL \
|
|
-D_LARGEFILE64_SOURCE -D_NO_USER_PROTOS -D_UNSUPPORTED \
|
|
-D__BIGMSGQUEUE_ENABLED -D__ROSE__ -U__hp9000s700 \
|
|
-D_XPG4_EXTENDED -D__STDC_EXT__
|
|
|
|
# Definitions which apply to IPF only
|
|
|
|
CCOPTS_ipf= +DSitanium2 +kernel +objstatvars +Olit=all +Oshortdata=0 +W863
|
|
|
|
IDENTS_ipf= -DKERNEL_DEBUGGER -DVARIABLE_UAREA -D_SYSCALL_64 -D__NO_PA_HDRS
|
|
|
|
LDOPTS_ipf= +noobjdebug
|
|
|
|
# Definitions which apply to PA only
|
|
|
|
CCOPTS_pa= +DS2.0 +ES1.Xindirect_calls +ESlit +ESsfc +ESssf \
|
|
+ordering_unaware +Oentrysched +Ofastaccess +Omultiprocessor \
|
|
-Wp,-H300000 +Xid
|
|
|
|
IDENTS_pa= -DCOMB_FLIPPER -DKGDB_ON -DLP64_TMP_NODBG -DNEW_MFCTL_W \
|
|
-DNEW_RDB -DPARISC -DRDB -DSPP_OBP_BOOT -DSPP_RUNWAY_ERR_ENABLED \
|
|
-D__NO_EM_HDRS -D__ROSEVILLE__ -D__TEMP64__ -D__hp9000s800
|
|
|
|
LDOPTS_pa=
|
|
|
|
|
|
# above from the Makefile.bld example
|
|
|
|
LDOPTS= ${LDOPTS_${ARCH}}
|
|
KDEFS= $(CCOPTS_common) $(IDENTS_common) $(CPU_KDEFS)
|
|
KDEFS_64= ${CCOPTS_${ARCH}} ${IDENTS_${ARCH}}
|
|
|
|
MODLINK=/opt/ddk/11.23/BE/bin/modlink
|
|
MODMETA=/opt/ddk/11.23/BE/bin/modmeta
|
|
|
|
<all>
|
|
|
|
DEFINES= -DAFSDEBUG -DKERNEL -DAFS -DVICE -DNFS -DUFS -DINET -DQUOTA -DGETMOUNT -DHPONCPLUS
|
|
OPTF=${OPT}
|
|
OPTF2=${OPT2}
|
|
CFLAGS=-I. -I.. -I../h -I../nfs -I../conf -I${TOP_OBJDIR}/src/config ${FSINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
|
|
|
|
# Name of directory to hold object files and libraries.
|
|
KOBJ=STATIC
|
|
|
|
# This is the hpux multiple directory target.
|
|
COMPDIRS = hpux_compdirs
|
|
INSTDIRS = hpux_instdirs
|
|
DESTDIRS = hpux_destdirs
|
|
|
|
include Makefile.common
|
|
|
|
<hp_ux11i hp_ux110 hp_ux102>
|
|
BITS = 64 32
|
|
<ia64_hpux1122 ia64_hpux1123 hp_ux1123>
|
|
BITS = 64
|
|
<all>
|
|
|
|
setup:
|
|
-$(RM) -f h conf net dux machine netinet nfs rpc s200 ufs sys
|
|
<hp_ux102>
|
|
ln -fs /usr/include/sys h
|
|
<hp_ux110 hp_ux11i ia64_hpux1122>
|
|
ln -fs /etc/conf/h h
|
|
<hp_ux102 hp_ux110 hp_ux11i ia64_hpux1122>
|
|
ln -fs /etc/conf conf
|
|
ln -fs /etc/conf/net net
|
|
ln -fs /etc/conf/dux dux
|
|
ln -fs /etc/conf/machine machine
|
|
ln -fs /etc/conf/netinet netinet
|
|
ln -fs /etc/conf/nfs nfs
|
|
ln -fs /usr/include/rpc rpc
|
|
ln -fs /etc/conf/machine s200
|
|
<hp_ux11i hp_ux110 hp_ux102>
|
|
ln -fs /etc/conf/ufs ufs
|
|
<ia64_hpux1122>
|
|
ln -fs /etc/conf/sys ufs
|
|
<ia64_hpux1123 hp_ux1123>
|
|
ln -fs /usr/include/sys h
|
|
ln -fs /usr/include/net net
|
|
ln -fs /usr/include/netinet netinet
|
|
ln -fs /usr/include/nfs nfs
|
|
ln -fs /usr/include/rpc rpc
|
|
ln -fs /usr/include/sys ufs
|
|
<all>
|
|
ln -fs /usr/include/sys sys
|
|
for b in $(BITS); do \
|
|
for t in $(KOBJ); do \
|
|
dir=$$t.$$b; \
|
|
echo Making directory: $$dir; \
|
|
mkdir -p $$dir; \
|
|
$(RM) -f $$dir/Makefile $$dir/Makefile.common $$dir/config; \
|
|
ln -fs ../Makefile $$dir/Makefile; \
|
|
ln -fs ../Makefile.common $$dir/Makefile.common; \
|
|
ln -fs ../config $$dir/config; \
|
|
done; \
|
|
done
|
|
echo Setup complete.
|
|
|
|
# Compile the clients.
|
|
${COMPDIRS} ${INSTDIRS} ${DESTDIRS}:
|
|
if true; then \
|
|
for b in $(BITS); do \
|
|
for t in $(KOBJ); do \
|
|
dir=$$t.$$b; \
|
|
echo Building directory: $$dir; \
|
|
case $$b in \
|
|
32) bopts="$(KDEFS_32)"; bsuff="";; \
|
|
64) bopts="$(KDEFS_64)"; bsuff="64";; \
|
|
esac; \
|
|
cd $$dir; \
|
|
$(MAKE) BITSUFFIX=$$bsuff CPU_KDEFS="$$bopts" $@_libafs || exit $$?; \
|
|
cd ..; \
|
|
done; \
|
|
done; \
|
|
fi
|
|
|
|
hpux_compdirs_libafs: depsrcs libafs
|
|
hpux_instdirs_libafs: install_libafs
|
|
hpux_destdirs_libafs: dest_libafs
|
|
|
|
|
|
# Below this line are targets when in the static directory:
|
|
<all -ia64_hpux1123 -hp_ux1123>
|
|
LIBAFS = libafs$(BITSUFFIX).a
|
|
LIBAFSNONFS = libafs$(BITSUFFIX).nonfs.a
|
|
<ia64_hpux1123 hp_ux1123>
|
|
LIBAFS = afs$(BITSUFFIX)_nfs
|
|
LIBAFSNONFS =afs$(BITSUFFIX)
|
|
<all>
|
|
|
|
INST_LIBAFS = ${DESTDIR}${afskerneldir}/${LIBAFS}
|
|
INST_LIBAFSNONFS = ${DESTDIR}${afskerneldir}/${LIBAFSNONFS}
|
|
|
|
DEST_LIBAFS = ${DEST}/root.client/usr/bin/${LIBAFS}
|
|
DEST_LIBAFSNONFS = ${DEST}/root.client/usr/bin/${LIBAFSNONFS}
|
|
|
|
|
|
libafs: ${LIBAFSNONFS}
|
|
|
|
install_libafs: $(LIBAFSNONFS)
|
|
${INSTALL} -d ${DESTDIR}${afskerneldir}
|
|
${INSTALL} -m 644 $(LIBAFSNONFS) $(INST_LIBAFSNONFS)
|
|
|
|
dest_libafs: $(LIBAFSNONFS)
|
|
${INSTALL} -d ${DEST}/root.client/usr/bin
|
|
${INSTALL} -m 644 $(LIBAFSNONFS) $(DEST_LIBAFSNONFS)
|
|
|
|
${LIBAFS}: $(AFSAOBJS) $(AFSNFSOBJS)
|
|
<all -ia64_hpux1123 -hp_ux1123>
|
|
$(AR) cru $@ $?
|
|
$(RANLIB) $@
|
|
<ia64_hpux1123 hp_ux1123>
|
|
$(MODLINK) -o $@ $(AFSAOBJS) $(AFSNFSOBJS)
|
|
<all>
|
|
|
|
${LIBAFSNONFS}: $(AFSAOBJS) $(AFSNONFSOBJS)
|
|
<all -ia64_hpux1123 -hp_ux1123>
|
|
$(AR) cru $@ $?
|
|
$(RANLIB) $@
|
|
<ia64_hpux1123 hp_ux1123>
|
|
$(MODLINK) -o $@ $(AFSAOBJS) $(AFSNONFSOBJS)
|
|
<all>
|
|
|
|
<ia64_hpux1123 hp_ux1123>
|
|
hpux_mod.modmeta.c: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/hpux_mod.modmeta
|
|
$(MODMETA) ${IDENTS_common} ${IDENTS_ipf} \
|
|
-DAFSLIB_NAME=${LIBAFSNONFS} \
|
|
$(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/hpux_mod.modmeta > hpux_mod.modmeta.c
|
|
|
|
hpux_mod_nfs.modmeta.c: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/hpux_mod.modmeta
|
|
$(MODMETA) ${IDENTS_common} ${IDENTS_ipf} \
|
|
-DAFSLIB_NAME=${LIBAFS} \
|
|
$(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/hpux_mod.modmeta > hpux_mod_nfs.modmeta.c
|
|
<all>
|