[Openmcl-cvs-notifications] r15014 - in /trunk/source/lisp-kernel: darwinx8632/ darwinx8632/Makefile darwinx8664/ darwinx8664/Makefile gc-common.c os-darwin.h probes.d thread_manager.c
rme at clozure.com
rme at clozure.com
Tue Oct 11 12:49:24 CDT 2011
Author: rme
Date: Tue Oct 11 12:49:23 2011
New Revision: 15014
Log:
Add a few experimental DTrace probes to the lisp kernel on
Darwin x86 systems.
Added:
trunk/source/lisp-kernel/probes.d
Modified:
trunk/source/lisp-kernel/darwinx8632/ (props changed)
trunk/source/lisp-kernel/darwinx8632/Makefile
trunk/source/lisp-kernel/darwinx8664/ (props changed)
trunk/source/lisp-kernel/darwinx8664/Makefile
trunk/source/lisp-kernel/gc-common.c
trunk/source/lisp-kernel/os-darwin.h
trunk/source/lisp-kernel/thread_manager.c
Propchange: trunk/source/lisp-kernel/darwinx8632/
---------------------------------------------------------------------------=
---
--- svn:ignore (added)
+++ svn:ignore Tue Oct 11 12:49:23 2011
@@ -1,0 +1,1 @@
+probes.h
Modified: trunk/source/lisp-kernel/darwinx8632/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/darwinx8632/Makefile (original)
+++ trunk/source/lisp-kernel/darwinx8632/Makefile Tue Oct 11 12:49:23 2011
@@ -32,7 +32,7 @@
M4 =3D gm4
M4FLAGS =3D -DDARWIN -DX86 -DX8632
ASFLAGS =3D -arch i386 -g
-CDEFINES =3D -DDARWIN -DX86 -DX8632 -DSVN_REVISION=3D$(SVN_REVISION) -D_DA=
RWIN_NO_64_BIT_INODE
+CDEFINES =3D -DDARWIN -DX86 -DX8632 -DSVN_REVISION=3D$(SVN_REVISION) -D_DA=
RWIN_NO_64_BIT_INODE -DUSE_DTRACE
CDEBUG =3D -g
COPT =3D -O2
# Once in a while, -Wformat says something useful. The odds are against t=
hat,
@@ -44,7 +44,9 @@
.s.o:
$(M4) $(M4FLAGS) -I../ $< | $(AS) $(ASFLAGS) -o $@
.c.o:
- $(CC) -include ../$(PLATFORM_H) -c -arch i386 $< $(CDEFINES) $(CDEBUG) $(=
COPT) $(MDYNAMIC_NO_PIC) $(WFORMAT) -mmacosx-version-min=3D$(OSVERSION) -is=
ysroot $(SDKROOT) -o $@
+ $(CC) -include ../$(PLATFORM_H) -c -arch i386 $< $(CDEFINES) \
+ $(CDEBUG) $(COPT) $(MDYNAMIC_NO_PIC) $(WFORMAT) \
+ -I. -mmacosx-version-min=3D$(OSVERSION) -isysroot $(SDKROOT) -o $@
=
SPOBJ =3D x86-spjump32.o x86-spentry32.o x86-subprims32.o
ASMOBJ =3D x86-asmutils32.o imports.o
@@ -90,9 +92,11 @@
=
$(SPOBJ): $(SPINC)
$(ASMOBJ): $(SPINC)
-$(COBJ): $(CHEADERS)
+$(COBJ): $(CHEADERS) probes.h
$(DEBUGOBJ): $(CHEADERS) lispdcmd.h
=
+probes.h: probes.d
+ dtrace -h -s $<
=
=
thread_manager.o: thread_manager.c =
Propchange: trunk/source/lisp-kernel/darwinx8664/
---------------------------------------------------------------------------=
---
--- svn:ignore (added)
+++ svn:ignore Tue Oct 11 12:49:23 2011
@@ -1,0 +1,1 @@
+probes.h
Modified: trunk/source/lisp-kernel/darwinx8664/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/darwinx8664/Makefile (original)
+++ trunk/source/lisp-kernel/darwinx8664/Makefile Tue Oct 11 12:49:23 2011
@@ -52,7 +52,7 @@
M4FLAGS =3D -DDARWIN -DX86 -DX8664 -DTCR_IN_GPR
ASFLAGS =3D -arch x86_64 -g
CDEFINES =3D -DDARWIN -DX86 -DX8664 -DTCR_IN_GPR -DSVN_REVISION=3D$(SVN_RE=
VISION) \
- -D_DARWIN_NO_64_BIT_INODE
+ -D_DARWIN_NO_64_BIT_INODE -DUSE_DTRACE
CDEBUG =3D -g
COPT =3D -O2
# Once in a while, -Wformat says something useful. The odds are against t=
hat,
@@ -65,7 +65,7 @@
.c.o:
$(CC) -include ../$(PLATFORM_H) -c $< -arch x86_64 $(CDEFINES) \
$(CDEBUG) $(COPT) $(WFORMAT) $(MDYNAMIC_NO_PIC) \
- -mmacosx-version-min=3D$(OSVERSION) -isysroot $(SDKROOT) -o $@
+ -I. -mmacosx-version-min=3D$(OSVERSION) -isysroot $(SDKROOT) -o $@
=
SPOBJ =3D x86-spjump64.o x86-spentry64.o x86-subprims64.o =
ASMOBJ =3D x86-asmutils64.o imports.o
@@ -112,9 +112,11 @@
=
$(SPOBJ): $(SPINC)
$(ASMOBJ): $(SPINC)
-$(COBJ): $(CHEADERS)
+$(COBJ): $(CHEADERS) probes.h
$(DEBUGOBJ): $(CHEADERS) lispdcmd.h
=
+probes.h: probes.d
+ dtrace -h -s $<
=
thread_manager.o: thread_manager.c =
=
Modified: trunk/source/lisp-kernel/gc-common.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/gc-common.c (original)
+++ trunk/source/lisp-kernel/gc-common.c Tue Oct 11 12:49:23 2011
@@ -1446,6 +1446,21 @@
fprintf(dbgout, ", %s bytes allocated.\n", buf);
}
=
+#ifdef USE_DTRACE
+ if (GCephemeral_low) {
+ if (CCL_EGC_START_ENABLED()) {
+ natural bytes_used =3D area_dnode(oldfree, a->low) << dnode_shift;
+ unsigned generation =3D (from =3D=3D g2_area) ? 2 : (from =3D=3D g1_=
area) ? 1 : 0;
+ CCL_EGC_START(bytes_used, generation);
+ }
+ } else {
+ if (CCL_GC_START_ENABLED()) {
+ natural bytes_used =3D area_dnode(oldfree, a->low) << dnode_shift;
+ CCL_GC_START(bytes_used);
+ }
+ }
+#endif
+
get_time(start);
=
/* The link-inverting marker might need to write to watched areas */
@@ -1766,6 +1781,22 @@
(header_subtag(header_of(val)) =3D=3D subtag_macptr)) {
long long justfreed =3D oldfree - a->active;
*( (long long *) ptr_from_lispobj(((macptr *) ptr_from_lispobj(untag=
(val)))->address)) +=3D justfreed;
+
+#ifdef USE_DTRACE
+ if (note =3D=3D tenured_area) {
+ if (CCL_GC_FINISH_ENABLED()) {
+ natural bytes_freed =3D justfreed <=3D heap_segment_size ? 0 : justfree=
d;
+ CCL_GC_FINISH(bytes_freed);
+ }
+ } else {
+ if (CCL_EGC_FINISH_ENABLED()) {
+ natural bytes_freed =3D justfreed <=3D heap_segment_size ? 0 : justfree=
d;
+ unsigned generation =3D (from =3D=3D g2_area) ? 2 : (from =3D=3D g1_are=
a) ? 1 : 0;
+ CCL_EGC_FINISH(bytes_freed, generation);
+ }
+ }
+#endif
+
if (GCverbose) {
char buf[16];
paging_info paging_info_stop;
Modified: trunk/source/lisp-kernel/os-darwin.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/os-darwin.h (original)
+++ trunk/source/lisp-kernel/os-darwin.h Tue Oct 11 12:49:23 2011
@@ -20,3 +20,8 @@
#define SIG_SUSPEND_THREAD SIGUSR2
=
#define SIG_KILL_THREAD SIGEMT
+
+#ifdef USE_DTRACE
+#include "probes.h"
+#endif
+
Added: trunk/source/lisp-kernel/probes.d
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/probes.d (added)
+++ trunk/source/lisp-kernel/probes.d Tue Oct 11 12:49:23 2011
@@ -1,0 +1,17 @@
+provider ccl {
+ probe gc__start(uint64_t);
+ probe gc__finish(uint64_t);
+ probe egc__start(uint64_t, unsigned);
+ probe egc__finish(uint64_t, unsigned);
+ probe create__thread(unsigned long);
+};
+
+/*
+
+gc-start(uint64_t bytes_allocated)
+gc-finish(uint64_t bytes-freed)
+egc-start(uint64_t bytes-allocated, unsigned generation)
+egc-finish(uint64_t bytes-freed, unsigned generation)
+create-thread(unsigned-long thread-id)
+
+*/
Modified: trunk/source/lisp-kernel/thread_manager.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/thread_manager.c (original)
+++ trunk/source/lisp-kernel/thread_manager.c Tue Oct 11 12:49:23 2011
@@ -1737,6 +1737,13 @@
SEM_WAIT_FOREVER(activation.created); /* Wait until thread's entered i=
ts initial function */
}
destroy_semaphore(&activation.created); =
+
+#ifdef USE_DTRACE
+ if (CCL_CREATE_THREAD_ENABLED() && activation.tcr) {
+ CCL_CREATE_THREAD(activation.tcr->osid);
+ }
+#endif
+
return TCR_TO_TSD(activation.tcr);
}
=
More information about the Openmcl-cvs-notifications
mailing list