svn commit: r293036 - in projects/clang380-import: libexec/rtld-elf/powerpc64 share/man/man4 sys/conf sys/dev/syscons/plasma sys/modules/rtwn sys/modules/syscons sys/modules/syscons/plasma sys/net ...
Dimitry Andric
dim at FreeBSD.org
Fri Jan 1 11:19:35 UTC 2016
Author: dim
Date: Fri Jan 1 11:19:32 2016
New Revision: 293036
URL: https://svnweb.freebsd.org/changeset/base/293036
Log:
Merge ^/head r293016 through r293035.
Added:
projects/clang380-import/sys/dev/syscons/plasma/
- copied from r293035, head/sys/dev/syscons/plasma/
projects/clang380-import/sys/modules/rtwn/
- copied from r293035, head/sys/modules/rtwn/
projects/clang380-import/sys/modules/syscons/plasma/
- copied from r293035, head/sys/modules/syscons/plasma/
Modified:
projects/clang380-import/libexec/rtld-elf/powerpc64/reloc.c
projects/clang380-import/libexec/rtld-elf/powerpc64/rtld_start.S
projects/clang380-import/share/man/man4/splash.4
projects/clang380-import/sys/conf/kmod.mk
projects/clang380-import/sys/modules/syscons/Makefile
projects/clang380-import/sys/net/if_ethersubr.c
projects/clang380-import/sys/net80211/ieee80211_freebsd.h
projects/clang380-import/sys/net80211/ieee80211_scan_sw.c
projects/clang380-import/sys/net80211/ieee80211_var.h
projects/clang380-import/sys/netinet/if_ether.c
projects/clang380-import/sys/powerpc/include/platform.h
projects/clang380-import/sys/powerpc/mpc85xx/mpc85xx.h
projects/clang380-import/sys/powerpc/mpc85xx/platform_mpc85xx.c
projects/clang380-import/sys/powerpc/powerpc/cpu.c
projects/clang380-import/sys/powerpc/powerpc/platform.c
projects/clang380-import/sys/powerpc/powerpc/platform_if.m
projects/clang380-import/tools/regression/geom_concat/conf.sh
projects/clang380-import/tools/regression/geom_mirror/conf.sh
projects/clang380-import/tools/regression/geom_raid3/conf.sh
projects/clang380-import/tools/regression/geom_shsec/conf.sh
projects/clang380-import/tools/regression/geom_stripe/conf.sh
projects/clang380-import/tools/regression/geom_subr.sh
Directory Properties:
projects/clang380-import/ (props changed)
projects/clang380-import/share/ (props changed)
projects/clang380-import/share/man/man4/ (props changed)
projects/clang380-import/sys/ (props changed)
projects/clang380-import/sys/conf/ (props changed)
Modified: projects/clang380-import/libexec/rtld-elf/powerpc64/reloc.c
==============================================================================
--- projects/clang380-import/libexec/rtld-elf/powerpc64/reloc.c Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/libexec/rtld-elf/powerpc64/reloc.c Fri Jan 1 11:19:32 2016 (r293036)
@@ -338,26 +338,19 @@ static int
reloc_plt_object(Obj_Entry *obj, const Elf_Rela *rela)
{
Elf_Addr *where = (Elf_Addr *)(obj->relocbase + rela->r_offset);
-#if !defined(_CALL_ELF) || _CALL_ELF == 1
- Elf_Addr *glink;
-#endif
long reloff;
reloff = rela - obj->pltrela;
+ dbg(" reloc_plt_object: where=%p,reloff=%lx,glink=%#lx", (void *)where,
+ reloff, obj->glink);
+
#if !defined(_CALL_ELF) || _CALL_ELF == 1
- if (obj->priv == NULL)
- obj->priv = xmalloc(obj->pltrelasize);
- glink = obj->priv + reloff*sizeof(Elf_Addr)*2;
-
- dbg(" reloc_plt_object: where=%p,reloff=%lx,glink=%p", (void *)where, reloff, glink);
-
- memcpy(where, _rtld_bind_start, sizeof(struct funcdesc));
- ((struct funcdesc *)(where))->env = (Elf_Addr)glink;
- *(glink++) = (Elf_Addr)obj;
- *(glink++) = reloff*sizeof(Elf_Rela);
+ /* Glink code is 3 instructions after the first 32k, 2 before */
+ *where = (Elf_Addr)obj->glink + 32 +
+ 8*((reloff < 0x8000) ? reloff : 0x8000) +
+ 12*((reloff < 0x8000) ? 0 : (reloff - 0x8000));
#else
- dbg(" reloc_plt_object: where=%p,reloff=%lx,glink=%#lx", (void *)where, reloff, obj->glink);
*where = (Elf_Addr)obj->glink + 4*reloff + 32;
#endif
@@ -416,13 +409,6 @@ reloc_jmpslots(Obj_Entry *obj, int flags
target = (Elf_Addr)(defobj->relocbase + def->st_value);
-#if 0
- /* PG XXX */
- dbg("\"%s\" in \"%s\" --> %p in \"%s\"",
- defobj->strtab + def->st_name, basename(obj->path),
- (void *)target, basename(defobj->path));
-#endif
-
if (def == &sym_zero) {
/* Zero undefined weak symbols */
#if !defined(_CALL_ELF) || _CALL_ELF == 1
@@ -461,12 +447,28 @@ reloc_jmpslot(Elf_Addr *wherep, Elf_Addr
(void *)wherep, (void *)target, *(Elf_Addr *)target,
(Elf_Addr)defobj->relocbase);
+ /*
+ * For the trampoline, the second two elements of the function
+ * descriptor are unused, so we are fine replacing those at any time
+ * with the real ones with no thread safety implications. However, we
+ * need to make sure the main entry point pointer ([0]) is seen to be
+ * modified *after* the second two elements. This can't be done in
+ * general, since there are no barriers in the reading code, but put in
+ * some isyncs to at least make it a little better.
+ */
memcpy(wherep, (void *)target, sizeof(struct funcdesc));
+ wherep[2] = ((Elf_Addr *)target)[2];
+ wherep[1] = ((Elf_Addr *)target)[1];
+ __asm __volatile ("isync" : : : "memory");
+ wherep[0] = ((Elf_Addr *)target)[0];
+ __asm __volatile ("isync" : : : "memory");
+
if (((struct funcdesc *)(wherep))->addr < (Elf_Addr)defobj->relocbase) {
/*
- * XXX: It is possible (e.g. LD_BIND_NOW) that the function
+ * It is possible (LD_BIND_NOW) that the function
* descriptor we are copying has not yet been relocated.
- * If this happens, fix it.
+ * If this happens, fix it. Don't worry about threading in
+ * this case since LD_BIND_NOW makes it irrelevant.
*/
((struct funcdesc *)(wherep))->addr +=
@@ -481,8 +483,6 @@ reloc_jmpslot(Elf_Addr *wherep, Elf_Addr
*wherep = target;
#endif
- __asm __volatile("sync" ::: "memory");
-
return (target);
}
@@ -506,7 +506,6 @@ reloc_gnu_ifunc(Obj_Entry *obj, int flag
void
init_pltgot(Obj_Entry *obj)
{
-#if defined(_CALL_ELF) && _CALL_ELF == 2
Elf_Addr *pltcall;
pltcall = obj->pltgot;
@@ -515,10 +514,12 @@ init_pltgot(Obj_Entry *obj)
return;
}
+#if defined(_CALL_ELF) && _CALL_ELF == 2
pltcall[0] = (Elf_Addr)&_rtld_bind_start;
pltcall[1] = (Elf_Addr)obj;
-
- __asm __volatile("sync" ::: "memory");
+#else
+ memcpy(pltcall, _rtld_bind_start, sizeof(struct funcdesc));
+ pltcall[2] = (Elf_Addr)obj;
#endif
}
Modified: projects/clang380-import/libexec/rtld-elf/powerpc64/rtld_start.S
==============================================================================
--- projects/clang380-import/libexec/rtld-elf/powerpc64/rtld_start.S Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/libexec/rtld-elf/powerpc64/rtld_start.S Fri Jan 1 11:19:32 2016 (r293036)
@@ -111,10 +111,7 @@ _ENTRY(_rtld_start)
*
* Call into the MI binder. This routine is reached via the PLT call cell
*
- * For ELFv1, on entry, %r11 contains a pointer to the (object, relocation)
- * tuple.
- *
- * For ELFv2, %r11 contains an object pointer and %r0 contains the PLT index.
+ * On entry, %r11 contains an object pointer and %r0 contains the PLT index.
*
* Save all registers, call into the binder to resolve and fixup the external
* routine, and then transfer to the external routine on return.
@@ -122,7 +119,7 @@ _ENTRY(_rtld_start)
.globl _rtld_bind
_ENTRY(_rtld_bind_start)
- mr %r12,%r0 # shunt r0 immediately to r12 for ELFv2
+ mr %r12,%r0 # save r0 (index) immediately to r12
mflr %r0
std %r0,16(%r1) # save lr
mfcr %r0
@@ -139,13 +136,9 @@ _ENTRY(_rtld_bind_start)
std %r9,64+6*8(%r1)
std %r10,64+7*8(%r1)
-#if !defined(_CALL_ELF) || _CALL_ELF == 1
- ld %r3,0(%r11)
- ld %r4,8(%r11)
-#else
mr %r3,%r11
- mulli %r4,%r12,24 /* Multiply index by sizeof(Elf_Rela) */
-#endif
+ mulli %r4,%r12,24 # Multiply index by sizeof(Elf_Rela)
+
bl _rtld_bind # target addr = _rtld_bind(obj, reloff)
nop
Modified: projects/clang380-import/share/man/man4/splash.4
==============================================================================
--- projects/clang380-import/share/man/man4/splash.4 Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/share/man/man4/splash.4 Fri Jan 1 11:19:32 2016 (r293036)
@@ -26,7 +26,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd November 29, 2010
+.Dd December 31, 2015
.Dt SPLASH 4
.Os
.Sh NAME
@@ -130,6 +130,8 @@ the screen will also be powered off.
Animated graphical
.Fx
logo.
+.It Pa plasma_saver.ko
+Draws an animated interference pattern.
.It Pa rain_saver.ko
Draws a shower on the screen.
.It Pa snake_saver.ko
@@ -282,6 +284,14 @@ based on the
code, with some additional inspiration from the
.Pa daemon_saver
code.
+The
+.Pa logo_saver ,
+.Pa plasma_saver ,
+.Pa rain_saver
+and
+.Pa warp_saver
+modules were written by
+.An Dag-Erling Sm\(/orgrav Aq Mt des at FreeBSD.org .
.Sh CAVEATS
Both the splash screen and the screen saver work with
.Xr syscons 4
Modified: projects/clang380-import/sys/conf/kmod.mk
==============================================================================
--- projects/clang380-import/sys/conf/kmod.mk Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/conf/kmod.mk Fri Jan 1 11:19:32 2016 (r293036)
@@ -28,6 +28,9 @@
#
# KMODUNLOAD Command to unload a kernel module [/sbin/kldunload]
#
+# KMODISLOADED Command to check whether a kernel module is
+# loaded [/sbin/kldstat -q -n]
+#
# PROG The name of the kernel module to build.
# If not supplied, ${KMOD}.ko is used.
#
@@ -56,10 +59,14 @@
# unload:
# Unload a module.
#
+# reload:
+# Unload if loaded, then load.
+#
AWK?= awk
KMODLOAD?= /sbin/kldload
KMODUNLOAD?= /sbin/kldunload
+KMODISLOADED?= /sbin/kldstat -q -n
OBJCOPY?= objcopy
.include <bsd.init.mk>
@@ -325,7 +332,11 @@ load: ${PROG}
.if !target(unload)
unload:
- ${KMODUNLOAD} -v ${PROG}
+ if ${KMODISLOADED} ${PROG} ; then ${KMODUNLOAD} -v ${PROG} ; fi
+.endif
+
+.if !target(reload)
+reload: unload load
.endif
.if defined(KERNBUILDDIR)
Modified: projects/clang380-import/sys/modules/syscons/Makefile
==============================================================================
--- projects/clang380-import/sys/modules/syscons/Makefile Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/modules/syscons/Makefile Fri Jan 1 11:19:32 2016 (r293036)
@@ -9,6 +9,7 @@ SUBDIR= ${_apm} \
${_fire} \
green \
${_logo} \
+ ${_plasma} \
${_rain} \
${_snake} \
${_star} \
@@ -25,6 +26,7 @@ _daemon= daemon
_dragon= dragon
_fire= fire
_logo= logo
+_plasma= plasma
_rain= rain
_snake= snake
_star= star
Modified: projects/clang380-import/sys/net/if_ethersubr.c
==============================================================================
--- projects/clang380-import/sys/net/if_ethersubr.c Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/net/if_ethersubr.c Fri Jan 1 11:19:32 2016 (r293036)
@@ -324,6 +324,10 @@ ether_output(struct ifnet *ifp, struct m
/*
* Add local net header. If no space in first mbuf,
* allocate another.
+ *
+ * Note that we do prepend regardless of RT_HAS_HEADER flag.
+ * This is done because BPF code shifts m_data pointer
+ * to the end of ethernet header prior to calling if_output().
*/
M_PREPEND(m, hlen, M_NOWAIT);
if (m == NULL)
Modified: projects/clang380-import/sys/net80211/ieee80211_freebsd.h
==============================================================================
--- projects/clang380-import/sys/net80211/ieee80211_freebsd.h Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/net80211/ieee80211_freebsd.h Fri Jan 1 11:19:32 2016 (r293036)
@@ -246,9 +246,11 @@ void ieee80211_vap_destroy(struct ieee80
(((_ifp)->if_flags & IFF_UP) && \
((_ifp)->if_drv_flags & IFF_DRV_RUNNING))
+/* XXX TODO: cap these at 1, as hz may not be 1000 */
#define msecs_to_ticks(ms) (((ms)*hz)/1000)
#define ticks_to_msecs(t) (1000*(t) / hz)
#define ticks_to_secs(t) ((t) / hz)
+
#define time_after(a,b) ((long)(b) - (long)(a) < 0)
#define time_before(a,b) time_after(b,a)
#define time_after_eq(a,b) ((long)(a) - (long)(b) >= 0)
Modified: projects/clang380-import/sys/net80211/ieee80211_scan_sw.c
==============================================================================
--- projects/clang380-import/sys/net80211/ieee80211_scan_sw.c Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/net80211/ieee80211_scan_sw.c Fri Jan 1 11:19:32 2016 (r293036)
@@ -641,7 +641,7 @@ scan_task(void *arg, int pending)
* XXX Should use M_TXCB mechanism to eliminate this.
*/
cv_timedwait(&SCAN_PRIVATE(ss)->ss_scan_cv,
- IEEE80211_LOCK_OBJ(ic), hz / 1000);
+ IEEE80211_LOCK_OBJ(ic), msecs_to_ticks(1));
if (SCAN_PRIVATE(ss)->ss_iflags & ISCAN_ABORT)
goto done;
}
Modified: projects/clang380-import/sys/net80211/ieee80211_var.h
==============================================================================
--- projects/clang380-import/sys/net80211/ieee80211_var.h Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/net80211/ieee80211_var.h Fri Jan 1 11:19:32 2016 (r293036)
@@ -84,6 +84,7 @@
#define IEEE80211_MS_TO_TU(x) (((x) * 1000) / 1024)
#define IEEE80211_TU_TO_MS(x) (((x) * 1024) / 1000)
+/* XXX TODO: cap this at 1, in case hz is not 1000 */
#define IEEE80211_TU_TO_TICKS(x)(((x) * 1024 * hz) / (1000 * 1000))
/*
Modified: projects/clang380-import/sys/netinet/if_ether.c
==============================================================================
--- projects/clang380-import/sys/netinet/if_ether.c Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/netinet/if_ether.c Fri Jan 1 11:19:32 2016 (r293036)
@@ -1334,8 +1334,5 @@ arp_init(void)
if (IS_DEFAULT_VNET(curvnet))
iflladdr_tag = EVENTHANDLER_REGISTER(iflladdr_event,
arp_iflladdr, NULL, EVENTHANDLER_PRI_ANY);
- if (IS_DEFAULT_VNET(curvnet))
- iflladdr_tag = EVENTHANDLER_REGISTER(iflladdr_event,
- arp_iflladdr, NULL, EVENTHANDLER_PRI_ANY);
}
SYSINIT(arp, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, arp_init, 0);
Modified: projects/clang380-import/sys/powerpc/include/platform.h
==============================================================================
--- projects/clang380-import/sys/powerpc/include/platform.h Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/powerpc/include/platform.h Fri Jan 1 11:19:32 2016 (r293036)
@@ -57,6 +57,8 @@ void platform_smp_ap_init(void);
const char *installed_platform(void);
void platform_probe_and_attach(void);
+void platform_cpu_idle(int);
+
void platform_sleep(void);
#endif /* _MACHINE_PLATFORM_H_ */
Modified: projects/clang380-import/sys/powerpc/mpc85xx/mpc85xx.h
==============================================================================
--- projects/clang380-import/sys/powerpc/mpc85xx/mpc85xx.h Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/powerpc/mpc85xx/mpc85xx.h Fri Jan 1 11:19:32 2016 (r293036)
@@ -132,6 +132,12 @@ extern vm_offset_t ccsrbar_va;
#define OCP85XX_RSTCR (CCSRBAR_VA + 0xe00b0)
/*
+ * Run Control/Power Management Registers.
+ */
+#define OCP85XX_RCPM_CDOZSR (CCSRBAR_VA + 0xe2004)
+#define OCP85XX_RCPM_CDOZCR (CCSRBAR_VA + 0xe200c)
+
+/*
* Prototypes.
*/
uint32_t ccsr_read4(uintptr_t addr);
Modified: projects/clang380-import/sys/powerpc/mpc85xx/platform_mpc85xx.c
==============================================================================
--- projects/clang380-import/sys/powerpc/mpc85xx/platform_mpc85xx.c Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/powerpc/mpc85xx/platform_mpc85xx.c Fri Jan 1 11:19:32 2016 (r293036)
@@ -80,6 +80,8 @@ static int mpc85xx_smp_first_cpu(platfor
static int mpc85xx_smp_next_cpu(platform_t, struct cpuref *cpuref);
static int mpc85xx_smp_get_bsp(platform_t, struct cpuref *cpuref);
static int mpc85xx_smp_start_cpu(platform_t, struct pcpu *cpu);
+static void mpc85xx_idle(platform_t, int cpu);
+static int mpc85xx_idle_wakeup(platform_t plat, int cpu);
static void mpc85xx_reset(platform_t);
@@ -95,6 +97,8 @@ static platform_method_t mpc85xx_methods
PLATFORMMETHOD(platform_smp_start_cpu, mpc85xx_smp_start_cpu),
PLATFORMMETHOD(platform_reset, mpc85xx_reset),
+ PLATFORMMETHOD(platform_idle, mpc85xx_idle),
+ PLATFORMMETHOD(platform_idle_wakeup, mpc85xx_idle_wakeup),
PLATFORMMETHOD_END
};
@@ -478,3 +482,36 @@ mpc85xx_reset(platform_t plat)
;
}
+static void
+mpc85xx_idle(platform_t plat, int cpu)
+{
+#ifdef QORIQ_DPAA
+ uint32_t reg;
+
+ reg = ccsr_read4(OCP85XX_RCPM_CDOZCR);
+ ccsr_write4(OCP85XX_RCPM_CDOZCR, reg | (1 << cpu));
+ ccsr_read4(OCP85XX_RCPM_CDOZCR);
+#else
+ register_t msr;
+
+ msr = mfmsr();
+ /* Freescale E500 core RM section 6.4.1. */
+ __asm __volatile("msync; mtmsr %0; isync" ::
+ "r" (msr | PSL_WE));
+#endif
+}
+
+static int
+mpc85xx_idle_wakeup(platform_t plat, int cpu)
+{
+#ifdef QORIQ_DPAA
+ uint32_t reg;
+
+ reg = ccsr_read4(OCP85XX_RCPM_CDOZCR);
+ ccsr_write4(OCP85XX_RCPM_CDOZCR, reg & ~(1 << cpu));
+ ccsr_read4(OCP85XX_RCPM_CDOZCR);
+
+ return (1);
+#endif
+ return (0);
+}
Modified: projects/clang380-import/sys/powerpc/powerpc/cpu.c
==============================================================================
--- projects/clang380-import/sys/powerpc/powerpc/cpu.c Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/powerpc/powerpc/cpu.c Fri Jan 1 11:19:32 2016 (r293036)
@@ -607,12 +607,6 @@ cpu_idle(int busy)
busy, curcpu);
}
-int
-cpu_idle_wakeup(int cpu)
-{
- return (0);
-}
-
static void
cpu_idle_60x(sbintime_t sbt)
{
@@ -651,14 +645,9 @@ cpu_idle_60x(sbintime_t sbt)
static void
cpu_idle_booke(sbintime_t sbt)
{
- register_t msr;
-
- msr = mfmsr();
#ifdef E500
- /* Freescale E500 core RM section 6.4.1. */
- __asm __volatile("msync; mtmsr %0; isync" ::
- "r" (msr | PSL_WE));
+ platform_cpu_idle(PCPU_GET(cpuid));
#endif
}
Modified: projects/clang380-import/sys/powerpc/powerpc/platform.c
==============================================================================
--- projects/clang380-import/sys/powerpc/powerpc/platform.c Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/powerpc/powerpc/platform.c Fri Jan 1 11:19:32 2016 (r293036)
@@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$");
#include <sys/lock.h>
#include <sys/ktr.h>
#include <sys/mutex.h>
+#include <sys/proc.h>
#include <sys/systm.h>
#include <sys/smp.h>
#include <sys/sysctl.h>
@@ -252,6 +253,19 @@ cpu_reset()
PLATFORM_RESET(plat_obj);
}
+int
+cpu_idle_wakeup(int cpu)
+{
+ return (PLATFORM_IDLE_WAKEUP(plat_obj, cpu));
+}
+
+void
+platform_cpu_idle(int cpu)
+{
+
+ PLATFORM_IDLE(plat_obj, cpu);
+}
+
/*
* Platform install routines. Highest priority wins, using the same
* algorithm as bus attachment.
Modified: projects/clang380-import/sys/powerpc/powerpc/platform_if.m
==============================================================================
--- projects/clang380-import/sys/powerpc/powerpc/platform_if.m Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/sys/powerpc/powerpc/platform_if.m Fri Jan 1 11:19:32 2016 (r293036)
@@ -84,6 +84,14 @@ CODE {
{
return;
}
+ static void platform_null_idle(platform_t plat, int cpu)
+ {
+ return;
+ }
+ static int platform_null_idle_wakeup(platform_t plat, int cpu)
+ {
+ return (0);
+ }
};
/**
@@ -211,6 +219,22 @@ METHOD void reset {
};
/**
+ * @brief Idle a CPU
+ */
+METHOD void idle {
+ platform_t _plat;
+ int _cpu;
+} DEFAULT platform_null_idle;
+
+/**
+ * @brief Wake up an idle CPU
+ */
+METHOD int idle_wakeup {
+ platform_t _plat;
+ int _cpu;
+} DEFAULT platform_null_idle_wakeup;
+
+/**
* @brief Suspend the CPU
*/
METHOD void sleep {
Modified: projects/clang380-import/tools/regression/geom_concat/conf.sh
==============================================================================
--- projects/clang380-import/tools/regression/geom_concat/conf.sh Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/tools/regression/geom_concat/conf.sh Fri Jan 1 11:19:32 2016 (r293036)
@@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
-name="test"
+name="$(mktemp -u concat.XXXXXX)"
class="concat"
base=`basename $0`
Modified: projects/clang380-import/tools/regression/geom_mirror/conf.sh
==============================================================================
--- projects/clang380-import/tools/regression/geom_mirror/conf.sh Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/tools/regression/geom_mirror/conf.sh Fri Jan 1 11:19:32 2016 (r293036)
@@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
-name="test"
+name="$(mktemp -u mirror.XXXXXX)"
class="mirror"
base=`basename $0`
Modified: projects/clang380-import/tools/regression/geom_raid3/conf.sh
==============================================================================
--- projects/clang380-import/tools/regression/geom_raid3/conf.sh Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/tools/regression/geom_raid3/conf.sh Fri Jan 1 11:19:32 2016 (r293036)
@@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
-name="test"
+name="$(mktemp -u graid3.XXXXXX)"
class="raid3"
base=`basename $0`
Modified: projects/clang380-import/tools/regression/geom_shsec/conf.sh
==============================================================================
--- projects/clang380-import/tools/regression/geom_shsec/conf.sh Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/tools/regression/geom_shsec/conf.sh Fri Jan 1 11:19:32 2016 (r293036)
@@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
-name="test"
+name="$(mktemp -u shsec.XXXXXX)"
class="shsec"
base=`basename $0`
Modified: projects/clang380-import/tools/regression/geom_stripe/conf.sh
==============================================================================
--- projects/clang380-import/tools/regression/geom_stripe/conf.sh Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/tools/regression/geom_stripe/conf.sh Fri Jan 1 11:19:32 2016 (r293036)
@@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
-name="test"
+name="$(mktemp -u stripe.XXXXXX)"
class="stripe"
base=`basename $0`
Modified: projects/clang380-import/tools/regression/geom_subr.sh
==============================================================================
--- projects/clang380-import/tools/regression/geom_subr.sh Fri Jan 1 10:15:06 2016 (r293035)
+++ projects/clang380-import/tools/regression/geom_subr.sh Fri Jan 1 11:19:32 2016 (r293036)
@@ -1,7 +1,12 @@
#!/bin/sh
# $FreeBSD$
-kldstat -q -m g_${class} || g${class} load || exit 1
+if [ $(id -u) -ne 0 ]; then
+ echo 'Tests must be run as root'
+ echo 'Bail out!'
+ exit 1
+fi
+kldstat -q -m g_${class} || geom ${class} load || exit 1
devwait()
{
@@ -12,3 +17,32 @@ devwait()
sleep 0.2
done
}
+
+# Need to keep track of the test md devices to avoid the scenario where a test
+# failing will cause the other tests to bomb out, or a test failing will leave
+# a large number of md(4) devices lingering around
+: ${TMPDIR=/tmp}
+export TMPDIR
+TEST_MDS_FILE=${TMPDIR}/test_mds
+
+attach_md()
+{
+ local test_md
+
+ test_md=$(mdconfig -a "$@") || exit
+ echo $test_md >> $TEST_MDS_FILE || exit
+ echo $test_md
+}
+
+geom_test_cleanup()
+{
+ local test_md
+
+ if [ -f $TEST_MDS_FILE ]; then
+ while read test_md; do
+ # The "#" tells the TAP parser this is a comment
+ echo "# Removing test memory disk: $test_md"
+ mdconfig -d -u $test_md
+ done < $TEST_MDS_FILE
+ fi
+}
More information about the svn-src-projects
mailing list