oprofile 0.9.6

Copy in the rest of the oprofile 0.9.6 tree so we have a source
copy to match the prebuilt binaries that are checked into
external/.

Change-Id: Iaac327571d5d583594a4194973bf256569061048
diff --git a/gui/Makefile.am b/gui/Makefile.am
new file mode 100644
index 0000000..ba5e27c
--- /dev/null
+++ b/gui/Makefile.am
@@ -0,0 +1,43 @@
+SUBDIRS = ui
+
+dist_sources = \
+	oprof_start.cpp \
+	oprof_start_config.cpp \
+	oprof_start_util.cpp \
+	oprof_start_main.cpp \
+	oprof_start.h \
+	oprof_start_config.h \
+	oprof_start_util.h
+
+EXTRA_DIST = $(dist_sources)
+
+if have_qt
+
+AM_CPPFLAGS = \
+	@QT_INCLUDES@ \
+	-I ${top_srcdir}/libop \
+	-I ${top_srcdir}/libutil++ \
+	-I ${top_srcdir}/libutil
+
+AM_CXXFLAGS = @OP_CXXFLAGS@
+
+bin_PROGRAMS = oprof_start
+
+oprof_start_SOURCES = $(dist_sources)
+nodist_oprof_start_SOURCES = oprof_start.moc.cpp
+oprof_start_LDADD = \
+	../libutil++/libutil++.a \
+	../libop/libop.a \
+	../libutil/libutil.a \
+	ui/liboprof_start.a \
+	@QT_LDFLAGS@ \
+	@QT_LIB@ \
+	@X_LIBS@
+
+oprof_start.moc.cpp: ${top_srcdir}/gui/oprof_start.h
+	$(MOC) -o $@ ${top_srcdir}/gui/oprof_start.h
+
+clean-local:
+	rm -f oprof_start.moc.cpp
+
+endif
diff --git a/gui/Makefile.in b/gui/Makefile.in
new file mode 100644
index 0000000..251b9f1
--- /dev/null
+++ b/gui/Makefile.in
@@ -0,0 +1,669 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@have_qt_TRUE@bin_PROGRAMS = oprof_start$(EXEEXT)
+subdir = gui
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/binutils.m4 \
+	$(top_srcdir)/m4/builtinexpect.m4 \
+	$(top_srcdir)/m4/cellspubfdsupport.m4 \
+	$(top_srcdir)/m4/compileroption.m4 \
+	$(top_srcdir)/m4/configmodule.m4 \
+	$(top_srcdir)/m4/copyifchange.m4 $(top_srcdir)/m4/docbook.m4 \
+	$(top_srcdir)/m4/extradirs.m4 $(top_srcdir)/m4/findkernel.m4 \
+	$(top_srcdir)/m4/kerneloption.m4 \
+	$(top_srcdir)/m4/kernelversion.m4 \
+	$(top_srcdir)/m4/mallocattribute.m4 \
+	$(top_srcdir)/m4/poptconst.m4 \
+	$(top_srcdir)/m4/precompiledheader.m4 $(top_srcdir)/m4/qt.m4 \
+	$(top_srcdir)/m4/resultyn.m4 $(top_srcdir)/m4/sstream.m4 \
+	$(top_srcdir)/m4/typedef.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am__oprof_start_SOURCES_DIST = oprof_start.cpp oprof_start_config.cpp \
+	oprof_start_util.cpp oprof_start_main.cpp oprof_start.h \
+	oprof_start_config.h oprof_start_util.h
+am__objects_1 = oprof_start.$(OBJEXT) oprof_start_config.$(OBJEXT) \
+	oprof_start_util.$(OBJEXT) oprof_start_main.$(OBJEXT)
+@have_qt_TRUE@am_oprof_start_OBJECTS = $(am__objects_1)
+@have_qt_TRUE@nodist_oprof_start_OBJECTS = oprof_start.moc.$(OBJEXT)
+oprof_start_OBJECTS = $(am_oprof_start_OBJECTS) \
+	$(nodist_oprof_start_OBJECTS)
+@have_qt_TRUE@oprof_start_DEPENDENCIES = ../libutil++/libutil++.a \
+@have_qt_TRUE@	../libop/libop.a ../libutil/libutil.a \
+@have_qt_TRUE@	ui/liboprof_start.a
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(oprof_start_SOURCES) $(nodist_oprof_start_SOURCES)
+DIST_SOURCES = $(am__oprof_start_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BFD_LIBS = @BFD_LIBS@
+BUILD_JVMPI_AGENT_FALSE = @BUILD_JVMPI_AGENT_FALSE@
+BUILD_JVMPI_AGENT_TRUE = @BUILD_JVMPI_AGENT_TRUE@
+BUILD_JVMTI_AGENT_FALSE = @BUILD_JVMTI_AGENT_FALSE@
+BUILD_JVMTI_AGENT_TRUE = @BUILD_JVMTI_AGENT_TRUE@
+CAT_ENTRY_END = @CAT_ENTRY_END@
+CAT_ENTRY_START = @CAT_ENTRY_START@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOCBOOK_ROOT = @DOCBOOK_ROOT@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_CFLAGS_MODULE = @EXTRA_CFLAGS_MODULE@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAVA_HOMEDIR = @JAVA_HOMEDIR@
+KINC = @KINC@
+KSRC = @KSRC@
+KVERS = @KVERS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBERTY_LIBS = @LIBERTY_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MOC = @MOC@
+MODINSTALLDIR = @MODINSTALLDIR@
+OBJEXT = @OBJEXT@
+OPROFILE_DIR = @OPROFILE_DIR@
+OPROFILE_MODULE_ARCH = @OPROFILE_MODULE_ARCH@
+OP_CFLAGS = @OP_CFLAGS@
+OP_CXXFLAGS = @OP_CXXFLAGS@
+OP_DOCDIR = @OP_DOCDIR@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+POPT_LIBS = @POPT_LIBS@
+PTRDIFF_T_TYPE = @PTRDIFF_T_TYPE@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+QT_LIB = @QT_LIB@
+QT_VERSION = @QT_VERSION@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIZE_T_TYPE = @SIZE_T_TYPE@
+STRIP = @STRIP@
+UIC = @UIC@
+VERSION = @VERSION@
+XML_CATALOG = @XML_CATALOG@
+XSLTPROC = @XSLTPROC@
+XSLTPROC_FLAGS = @XSLTPROC_FLAGS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+have_qt_FALSE = @have_qt_FALSE@
+have_qt_TRUE = @have_qt_TRUE@
+have_xsltproc_FALSE = @have_xsltproc_FALSE@
+have_xsltproc_TRUE = @have_xsltproc_TRUE@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kernel_support_FALSE = @kernel_support_FALSE@
+kernel_support_TRUE = @kernel_support_TRUE@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+topdir = @topdir@
+SUBDIRS = ui
+dist_sources = \
+	oprof_start.cpp \
+	oprof_start_config.cpp \
+	oprof_start_util.cpp \
+	oprof_start_main.cpp \
+	oprof_start.h \
+	oprof_start_config.h \
+	oprof_start_util.h
+
+EXTRA_DIST = $(dist_sources)
+@have_qt_TRUE@AM_CPPFLAGS = \
+@have_qt_TRUE@	@QT_INCLUDES@ \
+@have_qt_TRUE@	-I ${top_srcdir}/libop \
+@have_qt_TRUE@	-I ${top_srcdir}/libutil++ \
+@have_qt_TRUE@	-I ${top_srcdir}/libutil
+
+@have_qt_TRUE@AM_CXXFLAGS = @OP_CXXFLAGS@
+@have_qt_TRUE@oprof_start_SOURCES = $(dist_sources)
+@have_qt_TRUE@nodist_oprof_start_SOURCES = oprof_start.moc.cpp
+@have_qt_TRUE@oprof_start_LDADD = \
+@have_qt_TRUE@	../libutil++/libutil++.a \
+@have_qt_TRUE@	../libop/libop.a \
+@have_qt_TRUE@	../libutil/libutil.a \
+@have_qt_TRUE@	ui/liboprof_start.a \
+@have_qt_TRUE@	@QT_LDFLAGS@ \
+@have_qt_TRUE@	@QT_LIB@ \
+@have_qt_TRUE@	@X_LIBS@
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  gui/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign  gui/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	     || test -f $$p1 \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+oprof_start$(EXEEXT): $(oprof_start_OBJECTS) $(oprof_start_DEPENDENCIES) 
+	@rm -f oprof_start$(EXEEXT)
+	$(CXXLINK) $(oprof_start_LDFLAGS) $(oprof_start_OBJECTS) $(oprof_start_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oprof_start.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oprof_start.moc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oprof_start_config.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oprof_start_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oprof_start_util.Po@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(PROGRAMS)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+@have_qt_FALSE@clean-local:
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+	clean clean-binPROGRAMS clean-generic clean-libtool \
+	clean-local clean-recursive ctags ctags-recursive distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-recursive distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-exec install-exec-am \
+	install-info install-info-am install-man install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+	pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-binPROGRAMS uninstall-info-am
+
+
+@have_qt_TRUE@oprof_start.moc.cpp: ${top_srcdir}/gui/oprof_start.h
+@have_qt_TRUE@	$(MOC) -o $@ ${top_srcdir}/gui/oprof_start.h
+
+@have_qt_TRUE@clean-local:
+@have_qt_TRUE@	rm -f oprof_start.moc.cpp
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gui/oprof_start.cpp b/gui/oprof_start.cpp
new file mode 100644
index 0000000..0387136
--- /dev/null
+++ b/gui/oprof_start.cpp
@@ -0,0 +1,1071 @@
+/**
+ * @file oprof_start.cpp
+ * The GUI start main class
+ *
+ * @remark Copyright 2002 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author Philippe Elie
+ * @author John Levon
+ */
+
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <ctime>
+#include <cstdio>
+#include <cmath>
+#include <sstream>
+#include <iostream>
+#include <fstream>
+#include <algorithm>
+
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qcombobox.h>
+#include <qlistbox.h>
+#include <qfiledialog.h>
+#include <qbuttongroup.h>
+#include <qcheckbox.h>
+#include <qtabwidget.h>
+#include <qmessagebox.h>
+#include <qvalidator.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qheader.h>
+
+#include "config.h"
+#include "oprof_start.h"
+#include "op_config.h"
+#include "op_config_24.h"
+#include "string_manip.h"
+#include "op_cpufreq.h"
+#include "op_alloc_counter.h"
+#include "oprof_start_util.h"
+#include "file_manip.h"
+
+#include "op_hw_config.h"
+
+using namespace std;
+
+static char const * green_xpm[] = {
+"16 16 2 1",
+" 	c None",
+".	c #00FF00",
+"    .......     ",
+"  ...........   ",
+" .............  ",
+" .............  ",
+"............... ",
+"............... ",
+"............... ",
+"............... ",
+"............... ",
+"............... ",
+"............... ",
+" .............  ",
+" .............  ",
+"  ...........   ",
+"    .......     ",
+"                " };
+
+static char const * red_xpm[] = {
+"16 16 2 1",
+" 	c None",
+".	c #FF0000",
+"    .......     ",
+"  ...........   ",
+" .............  ",
+" .............  ",
+"............... ",
+"............... ",
+"............... ",
+"............... ",
+"............... ",
+"............... ",
+"............... ",
+" .............  ",
+" .............  ",
+"  ...........   ",
+"    .......     ",
+"                " };
+
+static QPixmap * green_pixmap;
+static QPixmap * red_pixmap;
+
+
+op_event_descr::op_event_descr()
+	:
+	counter_mask(0),
+	val(0),
+	unit(0),
+	min_count(0)
+{
+}
+
+
+oprof_start::oprof_start()
+	:
+	oprof_start_base(0, 0, false, 0),
+	event_count_validator(new QIntValidator(event_count_edit)),
+	current_event(0),
+	cpu_speed(op_cpu_frequency()),
+	total_nr_interrupts(0)
+{
+	green_pixmap = new QPixmap(green_xpm);
+	red_pixmap = new QPixmap(red_xpm);
+	vector<string> args;
+	args.push_back("--init");
+
+	if (do_exec_command(OP_BINDIR "/opcontrol", args))
+		exit(EXIT_FAILURE);
+
+	cpu_type = op_get_cpu_type();
+	op_nr_counters = op_get_nr_counters(cpu_type);
+
+	if (cpu_type == CPU_TIMER_INT) {
+		setup_config_tab->removePage(counter_setup_page);
+	} else {
+		fill_events();
+	}
+
+	op_interface interface = op_get_interface();
+	if (interface == OP_INTERFACE_NO_GOOD) {
+		QMessageBox::warning(this, 0, "Couldn't determine kernel"
+		                     " interface version");
+		exit(EXIT_FAILURE);
+	}
+	bool is_26 = interface == OP_INTERFACE_26;
+
+	if (is_26) {
+		note_table_size_edit->hide();
+		note_table_size_label->hide();
+		if (!op_file_readable("/dev/oprofile/backtrace_depth")) {
+			callgraph_depth_label->hide();
+			callgraph_depth_edit->hide();
+		}
+	} else {
+		callgraph_depth_label->hide();
+		callgraph_depth_edit->hide();
+		buffer_watershed_label->hide();
+		buffer_watershed_edit->hide();
+		cpu_buffer_size_label->hide();
+		cpu_buffer_size_edit->hide();
+	}
+
+	// setup the configuration page.
+	kernel_filename_edit->setText(config.kernel_filename.c_str());
+
+	no_vmlinux->setChecked(config.no_kernel);
+
+	buffer_size_edit->setText(QString().setNum(config.buffer_size));
+	buffer_watershed_edit->setText(QString().setNum(config.buffer_watershed));
+	cpu_buffer_size_edit->setText(QString().setNum(config.cpu_buffer_size));
+	note_table_size_edit->setText(QString().setNum(config.note_table_size));
+	callgraph_depth_edit->setText(QString().setNum(config.callgraph_depth));
+	verbose->setChecked(config.verbose);
+	separate_lib_cb->setChecked(config.separate_lib);
+	separate_kernel_cb->setChecked(config.separate_kernel);
+	separate_cpu_cb->setChecked(config.separate_cpu);
+	separate_thread_cb->setChecked(config.separate_thread);
+
+	// the unit mask check boxes
+	hide_masks();
+
+	event_count_edit->setValidator(event_count_validator);
+	QIntValidator * iv;
+	iv = new QIntValidator(OP_MIN_BUF_SIZE, OP_MAX_BUF_SIZE, buffer_size_edit);
+	buffer_size_edit->setValidator(iv);
+	iv = new QIntValidator(OP_MIN_NOTE_TABLE_SIZE, OP_MAX_NOTE_TABLE_SIZE, note_table_size_edit);
+	note_table_size_edit->setValidator(iv);
+	iv = new QIntValidator(0, INT_MAX, callgraph_depth_edit);
+	callgraph_depth_edit->setValidator(iv);
+	iv = new QIntValidator(0, INT_MAX, buffer_watershed_edit);
+	buffer_watershed_edit->setValidator(iv);
+	iv = new QIntValidator(0, OP_MAX_CPU_BUF_SIZE, cpu_buffer_size_edit);
+	cpu_buffer_size_edit->setValidator(iv);
+
+	// daemon status timer
+	startTimer(5000);
+	timerEvent(0);
+
+	resize(minimumSizeHint());
+
+	// force the pixmap re-draw
+	event_selected();
+}
+
+
+void oprof_start::fill_events()
+{
+	// we need to build the event descr stuff before loading the
+	// configuration because we use locate_event to get an event descr
+	// from its name.
+	struct list_head * pos;
+	struct list_head * events = op_events(cpu_type);
+
+	list_for_each(pos, events) {
+		struct op_event * event = list_entry(pos, struct op_event, event_next);
+
+		op_event_descr descr;
+
+		descr.counter_mask = event->counter_mask;
+		descr.val = event->val;
+		if (event->unit->num) {
+			descr.unit = event->unit;
+		} else {
+			descr.unit = 0;
+		}
+
+		descr.name = event->name;
+		descr.help_str = event->desc;
+		descr.min_count = event->min_count;
+
+		for (uint ctr = 0; ctr < op_nr_counters; ++ctr) {
+			uint count;
+
+			if (!(descr.counter_mask & (1 << ctr)))
+				continue;
+
+			if (cpu_type == CPU_RTC) {
+				count = 1024;
+			} else {
+				/* setting to cpu Hz / 2000 gives a safe value for
+				 * all events, and a good one for most.
+				 */
+				if (cpu_speed)
+					count = int(cpu_speed * 500);
+				else
+					count = descr.min_count * 100;
+			}
+
+			event_cfgs[descr.name].count = count;
+			event_cfgs[descr.name].umask = 0;
+			if (descr.unit)
+				event_cfgs[descr.name].umask = descr.unit->default_mask;
+			event_cfgs[descr.name].os_ring_count = 1;
+			event_cfgs[descr.name].user_ring_count = 1;
+		}
+
+		v_events.push_back(descr);
+	}
+
+	events_list->header()->hide();
+	events_list->setSorting(-1);
+
+	fill_events_listbox();
+
+	read_set_events();
+
+	// FIXME: why this ?
+	if (cpu_type == CPU_RTC)
+		events_list->setCurrentItem(events_list->firstChild());
+
+	load_config_file();
+}
+
+
+namespace {
+
+/// find the first item with the given text in column 0 or return NULL
+QListViewItem * findItem(QListView * view, char const * name)
+{
+	// Qt 2.3.1 does not have QListView::findItem()
+	QListViewItem * item = view->firstChild();
+
+	while (item && strcmp(item->text(0).latin1(), name))
+		item = item->nextSibling();
+
+	return item;
+}
+
+};
+
+
+void oprof_start::setup_default_event()
+{
+	struct op_default_event_descr descr;
+	op_default_event(cpu_type, &descr);
+
+	event_cfgs[descr.name].umask = descr.um;
+	event_cfgs[descr.name].count = descr.count;
+	event_cfgs[descr.name].user_ring_count = 1;
+	event_cfgs[descr.name].os_ring_count = 1;
+
+	QListViewItem * item = findItem(events_list, descr.name);
+	if (item)
+		item->setSelected(true);
+}
+
+
+void oprof_start::read_set_events()
+{
+	string name = get_config_filename(".oprofile/daemonrc");
+
+	ifstream in(name.c_str());
+
+	if (!in) {
+		setup_default_event();
+		return;
+	}
+
+	string str;
+
+	bool one_enabled = false;
+
+	while (getline(in, str)) {
+		string const val = split(str, '=');
+		string const name = str;
+
+		if (!is_prefix(name, "CHOSEN_EVENTS_"))
+			continue;
+
+		one_enabled = true;
+
+		// CHOSEN_EVENTS_#nr=CPU_CLK_UNHALTED:10000:0:1:1
+		vector<string> parts = separate_token(val, ':');
+
+		if (parts.size() != 5 && parts.size() != 2) {
+			cerr << "invalid configuration file\n";
+			// FIXME
+			exit(EXIT_FAILURE);
+		}
+
+		string ev_name = parts[0];
+		event_cfgs[ev_name].count =
+			op_lexical_cast<unsigned int>(parts[1]);
+
+		// CPU_CLK_UNHALTED:10000 is also valid
+		if (parts.size() == 5) {
+			event_cfgs[ev_name].umask =
+				op_lexical_cast<unsigned int>(parts[2]);
+			event_cfgs[ev_name].user_ring_count =
+				op_lexical_cast<unsigned int>(parts[3]);
+			event_cfgs[ev_name].os_ring_count =
+				op_lexical_cast<unsigned int>(parts[4]);
+		} else {
+			event_cfgs[ev_name].umask = 0;
+			event_cfgs[ev_name].user_ring_count = 1;
+			event_cfgs[ev_name].os_ring_count = 1;
+		}
+
+		QListViewItem * item = findItem(events_list, ev_name.c_str());
+		if (item)
+			item->setSelected(true);
+	}
+
+	// use default event if none set
+	if (!one_enabled)
+		setup_default_event();
+}
+
+
+void oprof_start::load_config_file()
+{
+	string name = get_config_filename(".oprofile/daemonrc");
+
+	ifstream in(name.c_str());
+	if (!in) {
+		if (!check_and_create_config_dir())
+			return;
+
+		ofstream out(name.c_str());
+		if (!out) {
+			QMessageBox::warning(this, 0, "Unable to open configuration "
+				"file ~/.oprofile/daemonrc");
+		}
+		return;
+	}
+
+	in >> config;
+}
+
+
+// user request a "normal" exit so save the config file.
+void oprof_start::accept()
+{
+	// record the previous settings
+	record_selected_event_config();
+
+	save_config();
+
+	QDialog::accept();
+}
+
+
+void oprof_start::closeEvent(QCloseEvent *)
+{
+	accept();
+}
+
+
+void oprof_start::timerEvent(QTimerEvent *)
+{
+	static time_t last = time(0);
+
+	daemon_status dstat;
+
+	flush_profiler_data_btn->setEnabled(dstat.running);
+	stop_profiler_btn->setEnabled(dstat.running);
+	start_profiler_btn->setEnabled(!dstat.running);
+	reset_sample_files_btn->setEnabled(!dstat.running);
+
+	if (!dstat.running) {
+		daemon_label->setText("Profiler is not running.");
+		return;
+	}
+
+	ostringstream ss;
+	ss << "Profiler running:";
+
+	time_t curr = time(0);
+	total_nr_interrupts += dstat.nr_interrupts;
+
+	if (curr - last)
+		ss << " (" << dstat.nr_interrupts / (curr - last) << " interrupts / second, total " << total_nr_interrupts << ")";
+
+	daemon_label->setText(ss.str().c_str());
+
+	last = curr;
+}
+
+
+void oprof_start::fill_events_listbox()
+{
+	setUpdatesEnabled(false);
+
+	for (vector<op_event_descr>::reverse_iterator cit = v_events.rbegin();
+	     cit != v_events.rend(); ++cit) {
+		new QListViewItem(events_list, cit->name.c_str());
+	}
+
+	setUpdatesEnabled(true);
+	update();
+}
+
+
+void oprof_start::display_event(op_event_descr const & descr)
+{
+	setUpdatesEnabled(false);
+
+	setup_unit_masks(descr);
+	os_ring_count_cb->setEnabled(true);
+	user_ring_count_cb->setEnabled(true);
+	event_count_edit->setEnabled(true);
+
+	event_setting & cfg = event_cfgs[descr.name];
+
+	os_ring_count_cb->setChecked(cfg.os_ring_count);
+	user_ring_count_cb->setChecked(cfg.user_ring_count);
+	QString count_text;
+	count_text.setNum(cfg.count);
+	event_count_edit->setText(count_text);
+	event_count_validator->setRange(descr.min_count, max_perf_count());
+
+	setUpdatesEnabled(true);
+	update();
+}
+
+
+bool oprof_start::is_selectable_event(QListViewItem * item)
+{
+	if (item->isSelected())
+		return true;
+
+	selected_events.insert(item);
+
+	bool ret = false;
+	if (alloc_selected_events())
+		ret = true;
+
+	selected_events.erase(item);
+
+	return ret;
+}
+
+
+void oprof_start::draw_event_list()
+{
+	QListViewItem * cur;
+	for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) {
+		if (is_selectable_event(cur))
+			cur->setPixmap(0, *green_pixmap);
+		else
+			cur->setPixmap(0, *red_pixmap);
+	}
+}
+
+
+bool oprof_start::alloc_selected_events() const
+{
+	vector<op_event const *> events;
+
+	set<QListViewItem *>::const_iterator it;
+	for (it = selected_events.begin(); it != selected_events.end(); ++it)
+		events.push_back(find_event_by_name((*it)->text(0).latin1(),0,0));
+
+	size_t * map =
+		map_event_to_counter(&events[0], events.size(), cpu_type);
+
+	if (!map)
+		return false;
+
+	free(map);
+	return true;
+}
+
+void oprof_start::event_selected()
+{
+	// The deal is simple: QT lack of a way to know what item was the last
+	// (de)selected item so we record a set of selected items and diff
+	// it in the appropriate way with the previous list of selected items.
+
+	set<QListViewItem *> current_selection;
+	QListViewItem * cur;
+	for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) {
+		if (cur->isSelected())
+			current_selection.insert(cur);
+	}
+
+	// First remove the deselected item.
+	vector<QListViewItem *> new_deselected;
+	set_difference(selected_events.begin(), selected_events.end(),
+		       current_selection.begin(), current_selection.end(),
+		       back_inserter(new_deselected));
+	vector<QListViewItem *>::const_iterator it;
+	for (it = new_deselected.begin(); it != new_deselected.end(); ++it)
+		selected_events.erase(*it);
+
+	// Now try to add the newly selected item if enough HW resource exists
+	vector<QListViewItem *> new_selected;
+	set_difference(current_selection.begin(), current_selection.end(),
+		       selected_events.begin(), selected_events.end(),
+		       back_inserter(new_selected));
+	for (it = new_selected.begin(); it != new_selected.end(); ++it) {
+		selected_events.insert(*it);
+		if (!alloc_selected_events()) {
+			(*it)->setSelected(false);
+			selected_events.erase(*it);
+		} else {
+			current_event = *it;
+		}
+	}
+
+	draw_event_list();
+
+	if (current_event)
+		display_event(locate_event(current_event->text(0).latin1()));
+}
+
+
+void oprof_start::event_over(QListViewItem * item)
+{
+	op_event_descr const & descr = locate_event(item->text(0).latin1());
+
+	string help_str = descr.help_str.c_str();
+	if (!is_selectable_event(item)) {
+		help_str += " conflicts with:";
+
+		set<QListViewItem *>::const_iterator it;
+		for (it = selected_events.begin(); 
+		     it != selected_events.end(); ) {
+			QListViewItem * temp = *it;
+			selected_events.erase(it++);
+			if (is_selectable_event(item)) {
+				help_str += " ";
+				help_str += temp->text(0).latin1();
+			}
+			selected_events.insert(temp);
+		}
+	}
+
+	event_help_label->setText(help_str.c_str());
+}
+
+
+/// select the kernel image filename
+void oprof_start::choose_kernel_filename()
+{
+	string name = kernel_filename_edit->text().latin1();
+	string result = do_open_file_or_dir(name, false);
+
+	if (!result.empty())
+		kernel_filename_edit->setText(result.c_str());
+}
+
+
+// this record the current selected event setting in the event_cfg[] stuff.
+// FIXME: need validation?
+void oprof_start::record_selected_event_config()
+{
+	if (!current_event)
+		return;
+
+	string name(current_event->text(0).latin1());
+
+	event_setting & cfg = event_cfgs[name];
+	op_event_descr const & curr = locate_event(name);
+
+	cfg.count = event_count_edit->text().toUInt();
+	cfg.os_ring_count = os_ring_count_cb->isChecked();
+	cfg.user_ring_count = user_ring_count_cb->isChecked();
+	cfg.umask = get_unit_mask(curr);
+}
+
+
+// validate and save the configuration (The qt validator installed
+// are not sufficient to do the validation)
+bool oprof_start::record_config()
+{
+	config.kernel_filename = kernel_filename_edit->text().latin1();
+	config.no_kernel = no_vmlinux->isChecked();
+
+	uint temp = buffer_size_edit->text().toUInt();
+	if (temp < OP_MIN_BUF_SIZE || temp > OP_MAX_BUF_SIZE) {
+		ostringstream error;
+
+		error << "buffer size out of range: " << temp
+		      << " valid range is [" << OP_MIN_BUF_SIZE << ", "
+		      << OP_MAX_BUF_SIZE << "]";
+
+		QMessageBox::warning(this, 0, error.str().c_str());
+
+		return false;
+	}
+	config.buffer_size = temp;
+
+	temp = buffer_watershed_edit->text().toUInt();
+	// watershed above half of buffer size make little sense.
+	if (temp > config.buffer_size / 2) {
+		ostringstream error;
+
+		error << "buffer watershed out of range: " << temp
+		      << " valid range is [0 (use default), buffer size/2] "
+		      << "generally 0.25 * buffer size is fine";
+
+		QMessageBox::warning(this, 0, error.str().c_str());
+
+		return false;
+	}
+	config.buffer_watershed = temp;
+
+	temp = cpu_buffer_size_edit->text().toUInt();
+	if ((temp != 0 && temp < OP_MIN_CPU_BUF_SIZE) ||
+	    temp > OP_MAX_CPU_BUF_SIZE) {
+		ostringstream error;
+
+		error << "cpu buffer size out of range: " << temp
+		      << " valid range is [" << OP_MIN_CPU_BUF_SIZE << ", "
+		      << OP_MAX_CPU_BUF_SIZE << "] (size = 0: use default)";
+
+		QMessageBox::warning(this, 0, error.str().c_str());
+
+		return false;
+	}
+	config.cpu_buffer_size = temp;
+
+	temp = note_table_size_edit->text().toUInt();
+	if (temp < OP_MIN_NOTE_TABLE_SIZE || temp > OP_MAX_NOTE_TABLE_SIZE) {
+		ostringstream error;
+
+		error << "note table size out of range: " << temp
+		      << " valid range is [" << OP_MIN_NOTE_TABLE_SIZE << ", "
+		      << OP_MAX_NOTE_TABLE_SIZE << "]";
+
+		QMessageBox::warning(this, 0, error.str().c_str());
+
+		return false;
+	}
+	config.note_table_size = temp;
+
+	temp = callgraph_depth_edit->text().toUInt();
+	if (temp > INT_MAX) {
+		ostringstream error;
+
+		error << "callgraph depth  out of range: " << temp
+		      << " valid range is [" << 0 << ", "
+		      << INT_MAX << "]";
+
+		QMessageBox::warning(this, 0, error.str().c_str());
+
+		return false;
+	}
+	config.callgraph_depth = temp;
+
+	config.verbose = verbose->isChecked();
+	config.separate_lib = separate_lib_cb->isChecked();
+	config.separate_kernel = separate_kernel_cb->isChecked();
+	config.separate_cpu = separate_cpu_cb->isChecked();
+	config.separate_thread = separate_thread_cb->isChecked();
+
+	return true;
+}
+
+
+void oprof_start::get_unit_mask_part(op_event_descr const & descr, uint num,
+                                     bool selected, uint & mask)
+{
+	if (!selected)
+		return;
+	if  (num >= descr.unit->num)
+		return;
+
+	if (descr.unit->unit_type_mask == utm_bitmask)
+		mask |= descr.unit->um[num].value;
+	else
+		mask = descr.unit->um[num].value;
+}
+
+
+// return the unit mask selected through the unit mask check box
+uint oprof_start::get_unit_mask(op_event_descr const & descr)
+{
+	uint mask = 0;
+
+	if (!descr.unit)
+		return 0;
+
+	// mandatory mask is transparent for user.
+	if (descr.unit->unit_type_mask == utm_mandatory) {
+		mask = descr.unit->default_mask;
+		return mask;
+	}
+
+	get_unit_mask_part(descr, 0, check0->isChecked(), mask);
+	get_unit_mask_part(descr, 1, check1->isChecked(), mask);
+	get_unit_mask_part(descr, 2, check2->isChecked(), mask);
+	get_unit_mask_part(descr, 3, check3->isChecked(), mask);
+	get_unit_mask_part(descr, 4, check4->isChecked(), mask);
+	get_unit_mask_part(descr, 5, check5->isChecked(), mask);
+	get_unit_mask_part(descr, 6, check6->isChecked(), mask);
+	get_unit_mask_part(descr, 7, check7->isChecked(), mask);
+	get_unit_mask_part(descr, 8, check8->isChecked(), mask);
+	get_unit_mask_part(descr, 9, check9->isChecked(), mask);
+	get_unit_mask_part(descr, 10, check10->isChecked(), mask);
+	get_unit_mask_part(descr, 11, check11->isChecked(), mask);
+	get_unit_mask_part(descr, 12, check12->isChecked(), mask);
+	get_unit_mask_part(descr, 13, check13->isChecked(), mask);
+	get_unit_mask_part(descr, 14, check14->isChecked(), mask);
+	get_unit_mask_part(descr, 15, check15->isChecked(), mask);
+	return mask;
+}
+
+
+void oprof_start::hide_masks()
+{
+	check0->hide();
+	check1->hide();
+	check2->hide();
+	check3->hide();
+	check4->hide();
+	check5->hide();
+	check6->hide();
+	check7->hide();
+	check8->hide();
+	check9->hide();
+	check10->hide();
+	check11->hide();
+	check12->hide();
+	check13->hide();
+	check14->hide();
+	check15->hide();
+}
+
+
+void oprof_start::setup_unit_masks(op_event_descr const & descr)
+{
+	op_unit_mask const * um = descr.unit;
+
+	hide_masks();
+
+	if (!um || um->unit_type_mask == utm_mandatory)
+		return;
+
+	event_setting & cfg = event_cfgs[descr.name];
+
+	unit_mask_group->setExclusive(um->unit_type_mask == utm_exclusive);
+
+	for (size_t i = 0; i < um->num ; ++i) {
+		QCheckBox * check = 0;
+		switch (i) {
+			case 0: check = check0; break;
+			case 1: check = check1; break;
+			case 2: check = check2; break;
+			case 3: check = check3; break;
+			case 4: check = check4; break;
+			case 5: check = check5; break;
+			case 6: check = check6; break;
+			case 7: check = check7; break;
+			case 8: check = check8; break;
+			case 9: check = check9; break;
+			case 10: check = check10; break;
+			case 11: check = check11; break;
+			case 12: check = check12; break;
+			case 13: check = check13; break;
+			case 14: check = check14; break;
+			case 15: check = check15; break;
+		}
+		check->setText(um->um[i].desc);
+		if (um->unit_type_mask == utm_exclusive)
+			check->setChecked(cfg.umask == um->um[i].value);
+		else
+			check->setChecked(cfg.umask & um->um[i].value);
+
+		check->show();
+	}
+	unit_mask_group->setMinimumSize(unit_mask_group->sizeHint());
+	setup_config_tab->setMinimumSize(setup_config_tab->sizeHint());
+}
+
+
+uint oprof_start::max_perf_count() const
+{
+	return cpu_type == CPU_RTC ? OP_MAX_RTC_COUNT : OP_MAX_PERF_COUNT;
+}
+
+
+void oprof_start::on_flush_profiler_data()
+{
+	vector<string> args;
+	args.push_back("--dump");
+
+	if (daemon_status().running)
+		do_exec_command(OP_BINDIR "/opcontrol", args);
+	else
+		QMessageBox::warning(this, 0, "The profiler is not started.");
+}
+
+
+// user is happy of its setting.
+void oprof_start::on_start_profiler()
+{
+	// save the current settings
+	record_selected_event_config();
+
+	bool one_enable = false;
+
+	QListViewItem * cur;
+	for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) {
+		if (!cur->isSelected())
+			continue;
+
+		// the missing reference is intended: gcc 2.91.66 can compile
+		// "op_event_descr const & descr = ..." w/o a warning
+		op_event_descr const descr =
+			locate_event(cur->text(0).latin1());
+
+		event_setting & cfg = event_cfgs[cur->text(0).latin1()];
+
+		one_enable = true;
+
+		if (!cfg.os_ring_count && !cfg.user_ring_count) {
+			QMessageBox::warning(this, 0, "You must select to "
+					 "profile at least one of user binaries/kernel");
+			return;
+		}
+
+		if (cfg.count < descr.min_count || 
+		    cfg.count > max_perf_count()) {
+			ostringstream out;
+
+			out << "event " << descr.name << " count of range: "
+			    << cfg.count << " must be in [ "
+			    << descr.min_count << ", "
+			    << max_perf_count()
+			    << "]";
+
+			QMessageBox::warning(this, 0, out.str().c_str());
+			return;
+		}
+
+		if (descr.unit &&
+		    descr.unit->unit_type_mask == utm_bitmask &&
+		    cfg.umask == 0) {
+			ostringstream out;
+
+			out << "event " << descr.name << " invalid unit mask: "
+			    << cfg.umask << endl;
+
+			QMessageBox::warning(this, 0, out.str().c_str());
+			return;
+		}
+	}
+
+	if (one_enable == false && cpu_type != CPU_TIMER_INT) {
+		QMessageBox::warning(this, 0, "No counters enabled.\n");
+		return;
+	}
+
+	if (daemon_status().running) {
+		// gcc 2.91 work around
+		int user_choice = 0;
+		user_choice =
+			QMessageBox::warning(this, 0,
+					     "Profiler already started:\n\n"
+					     "stop and restart it?",
+					     "&Restart", "&Cancel", 0, 0, 1);
+
+		if (user_choice == 1)
+			return;
+
+		// this flush profiler data also.
+		on_stop_profiler();
+	}
+
+	vector<string> args;
+
+	// save_config validate and setup the config
+	if (save_config()) {
+		// now actually start
+		args.push_back("--start");
+		if (config.verbose)
+			args.push_back("--verbose");
+		do_exec_command(OP_BINDIR "/opcontrol", args);
+	}
+
+	total_nr_interrupts = 0;
+	timerEvent(0);
+}
+
+
+bool oprof_start::save_config()
+{
+	if (!record_config())
+		return false;
+
+	vector<string> args;
+
+	// saving config is done by running opcontrol --setup with appropriate
+	// setted parameters so we use the same config file as command line
+	// tools
+
+	args.push_back("--setup");
+
+	bool one_enabled = false;
+
+	vector<string> tmpargs;
+	tmpargs.push_back("--setup");
+
+	QListViewItem * cur;
+	for (cur = events_list->firstChild(); cur; cur = cur->nextSibling()) {
+		if (!cur->isSelected())
+			continue;
+
+		event_setting & cfg = event_cfgs[cur->text(0).latin1()];
+
+		op_event_descr const & descr =
+			locate_event(cur->text(0).latin1());
+
+		one_enabled = true;
+
+		string arg = "--event=" + descr.name;
+		arg += ":" + op_lexical_cast<string>(cfg.count);
+		arg += ":" + op_lexical_cast<string>(cfg.umask);
+		arg += ":" + op_lexical_cast<string>(cfg.os_ring_count);
+		arg += ":" + op_lexical_cast<string>(cfg.user_ring_count);
+
+		tmpargs.push_back(arg);
+	}
+
+	// only set counters if at least one is enabled
+	if (one_enabled)
+		args = tmpargs;
+
+	if (config.no_kernel) {
+		args.push_back("--no-vmlinux");
+	} else {
+		args.push_back("--vmlinux=" + config.kernel_filename);
+	}
+
+	args.push_back("--buffer-size=" +
+	       op_lexical_cast<string>(config.buffer_size));
+
+	if (op_get_interface() == OP_INTERFACE_24) {
+		args.push_back("--note-table-size=" +
+		       op_lexical_cast<string>(config.note_table_size));
+	} else {
+		args.push_back("--buffer-watershed=" +
+		       op_lexical_cast<string>(config.buffer_watershed));
+		args.push_back("--cpu-buffer-size=" +
+		       op_lexical_cast<string>(config.cpu_buffer_size));
+		if (op_file_readable("/dev/oprofile/backtrace_depth")) {
+			args.push_back("--callgraph=" +
+		              op_lexical_cast<string>(config.callgraph_depth));
+		}
+	}
+
+	string sep = "--separate=";
+
+	if (config.separate_lib)
+		sep += "library,";
+	if (config.separate_kernel)
+		sep += "kernel,";
+	if (config.separate_cpu)
+		sep += "cpu,";
+	if (config.separate_thread)
+		sep += "thread,";
+
+	if (sep == "--separate=")
+		sep += "none";
+	args.push_back(sep);
+
+	// 2.95 work-around, it didn't like return !do_exec_command() 
+	bool ret = !do_exec_command(OP_BINDIR "/opcontrol", args);
+	return ret;
+}
+
+
+// flush and stop the profiler if it was started.
+void oprof_start::on_stop_profiler()
+{
+	vector<string> args;
+	args.push_back("--shutdown");
+
+	if (daemon_status().running)
+		do_exec_command(OP_BINDIR "/opcontrol", args);
+	else
+		QMessageBox::warning(this, 0, "The profiler is already stopped.");
+
+	timerEvent(0);
+}
+
+
+void oprof_start::on_separate_kernel_cb_changed(int state)
+{
+	if (state == 2)
+		separate_lib_cb->setChecked(true);
+}
+
+void oprof_start::on_reset_sample_files()
+{
+	int ret = QMessageBox::warning(this, 0, "Are you sure you want to "
+	       "reset your last profile session ?", "Yes", "No", 0, 0, 1);
+	if (!ret) {
+		vector<string> args;
+		args.push_back("--reset");
+		if (!do_exec_command(OP_BINDIR "/opcontrol", args))
+			// the next timer event will overwrite the message
+			daemon_label->setText("Last profile session reseted.");
+		else
+			QMessageBox::warning(this, 0,
+			     "Can't reset profiling session.");
+	}
+}
+
+
+/// function object for matching against name
+class event_name_eq {
+	string name_;
+public:
+	explicit event_name_eq(string const & s) : name_(s) {}
+	bool operator()(op_event_descr const & d) const {
+		return d.name == name_;
+	}
+};
+
+
+// helper to retrieve an event descr through its name.
+op_event_descr const & oprof_start::locate_event(string const & name) const
+{
+	return *(find_if(v_events.begin(), v_events.end(), event_name_eq(name)));
+}
diff --git a/gui/oprof_start.h b/gui/oprof_start.h
new file mode 100644
index 0000000..c2910ee
--- /dev/null
+++ b/gui/oprof_start.h
@@ -0,0 +1,164 @@
+/**
+ * @file oprof_start.h
+ * The GUI start main class
+ *
+ * @remark Copyright 2002 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author Philippe Elie
+ * @author John Levon
+ */
+
+#ifndef OPROF_START_H
+#define OPROF_START_H
+
+#include <vector>
+#include <map>
+#include <set>
+
+#include "ui/oprof_start.base.h"
+#include "oprof_start_config.h"
+
+#include "op_events.h"
+
+class QIntValidator;
+class QListViewItem;
+class QTimerEvent;
+
+/// a struct describing a particular event type
+struct op_event_descr {
+	op_event_descr();
+
+	/// bit mask of allowed counters
+	uint counter_mask;
+	/// hardware event number
+	u32 val;
+	/// unit mask values if applicable
+	op_unit_mask const * unit;
+	/// name of event
+	std::string name;
+	/// description of event
+	std::string help_str;
+	/// minimum counter value
+	uint min_count;
+};
+
+class oprof_start : public oprof_start_base
+{
+	Q_OBJECT
+
+public:
+	oprof_start();
+
+protected slots:
+	/// select the kernel image filename
+	void choose_kernel_filename();
+	/// flush profiler
+	void on_flush_profiler_data();
+	/// start profiler
+	void on_start_profiler();
+	/// stop profiler
+	void on_stop_profiler();
+	/// events selection change
+	void event_selected();
+	/// the mouse is over an event
+	void event_over(QListViewItem *);
+	/// state of separate_kernel_cb changed
+	void on_separate_kernel_cb_changed(int);
+	/// reset sample files
+	void on_reset_sample_files();
+
+	/// close the dialog
+	void accept();
+
+	/// WM hide event
+	void closeEvent(QCloseEvent * e);
+
+	/// timer event
+	void timerEvent(QTimerEvent * e);
+
+private:
+	/// the counter combo has been activated
+	void fill_events_listbox();
+
+	/// fill the event details and gui setup
+	void fill_events();
+
+	/// find an event description by name
+	op_event_descr const & locate_event(std::string const & name) const;
+
+	/// update config on user change
+	void record_selected_event_config();
+	/// update config and validate
+	bool record_config();
+
+	/// calculate unit mask for given event and unit mask part
+	void get_unit_mask_part(op_event_descr const & descr, uint num, bool selected, uint & mask);
+	/// calculate unit mask for given event
+	uint get_unit_mask(op_event_descr const & descr);
+	/// set the unit mask widgets for given event
+	void setup_unit_masks(op_event_descr const & descr);
+
+	/// return the maximum perf counter value for the current cpu type
+	uint max_perf_count() const;
+
+	/// show an event's settings
+	void display_event(op_event_descr const & descrp);
+
+	/// hide unit mask widgets
+	void hide_masks(void);
+
+	/// read the events set in daemonrc
+	void read_set_events();
+	/// use the default event
+	void setup_default_event();
+	/// load the extra config file
+	void load_config_file();
+	/// save the config
+	bool save_config();
+
+	/// redraw the event list by changing icon status
+	void draw_event_list();
+
+	/// return true if item is selectable or already selected
+	bool is_selectable_event(QListViewItem * item);
+
+	/// try to alloc counters for the selected_events
+	bool alloc_selected_events() const;
+
+	/// validator for event count
+	QIntValidator* event_count_validator;
+
+	/// all available events for this hardware
+	std::vector<op_event_descr> v_events;
+
+	/// current event configs for each counter
+	typedef std::map<std::string, event_setting> event_setting_map;
+	event_setting_map event_cfgs;
+
+	/// The currently selected events. We must track this because
+	/// with multiple selection listbox QT doesn't allow to know
+	/// what is the last selected item. events_selected() update it
+	std::set<QListViewItem *> selected_events;
+	QListViewItem * current_event;
+
+	/// current config
+	config_setting config;
+
+	/// the expansion of "~" directory
+	std::string user_dir;
+
+	/// CPU type
+	op_cpu cpu_type;
+
+	/// CPU speed in MHz
+	double cpu_speed;
+
+	/// total number of available HW counters
+	uint op_nr_counters;
+
+	/// Total number of samples for this run
+	unsigned long total_nr_interrupts;
+};
+
+#endif // OPROF_START_H
diff --git a/gui/oprof_start_config.cpp b/gui/oprof_start_config.cpp
new file mode 100644
index 0000000..b120af4
--- /dev/null
+++ b/gui/oprof_start_config.cpp
@@ -0,0 +1,112 @@
+/**
+ * @file oprof_start_config.cpp
+ * GUI startup config management
+ *
+ * @remark Copyright 2002 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author John Levon
+ * @author Philippe Elie
+ */
+
+#include <stdio.h>
+
+#include <sstream>
+#include <fstream>
+#include <iomanip>
+#include <sys/utsname.h>
+
+#include "string_manip.h"
+#include "oprof_start_config.h"
+#include "op_config.h"
+#include "op_config_24.h"
+
+using namespace std;
+
+event_setting::event_setting()
+	:
+	count(0),
+	umask(0),
+	os_ring_count(0),
+	user_ring_count(0)
+{
+}
+
+
+config_setting::config_setting()
+	:
+	buffer_size(OP_DEFAULT_BUF_SIZE),
+	note_table_size(OP_DEFAULT_NOTE_SIZE),
+	no_kernel(false),
+	verbose(false),
+	separate_lib(false),
+	separate_kernel(false),
+	separate_cpu(false),
+	separate_thread(false),
+	callgraph_depth(0),
+	buffer_watershed(0),
+	cpu_buffer_size(0)
+{
+	struct utsname info;
+
+	/* Guess path to vmlinux based on kernel currently running. */
+	if (uname(&info)) {
+		perror("oprof_start: Unable to determine OS release.");
+	} else {
+		string const version(info.release);
+		string const vmlinux_path("/lib/modules/" + version
+					 + "/build/vmlinux");
+		kernel_filename = vmlinux_path;
+	}
+}
+
+
+void config_setting::load(istream & in)
+{
+	buffer_size = OP_DEFAULT_BUF_SIZE;
+	note_table_size = OP_DEFAULT_NOTE_SIZE;
+
+	string str;
+
+	while (getline(in, str)) {
+		string val = split(str, '=');
+		if (str == "BUF_SIZE") {
+			buffer_size = op_lexical_cast<unsigned int>(val);
+			if (buffer_size < OP_DEFAULT_BUF_SIZE)
+				buffer_size = OP_DEFAULT_BUF_SIZE;
+		} else if (str == "NOTE_SIZE") {
+			note_table_size = op_lexical_cast<unsigned int>(val);
+			if (note_table_size < OP_DEFAULT_NOTE_SIZE)
+				note_table_size = OP_DEFAULT_NOTE_SIZE;
+		} else if (str == "VMLINUX") {
+			if (val == "none") {
+				kernel_filename = "";
+				no_kernel = true;
+			} else if (!val.empty()) {
+				no_kernel = false;
+				kernel_filename = val;
+			}
+		} else if (str == "SEPARATE_LIB") {
+			separate_lib = op_lexical_cast<bool>(val);
+		} else if (str == "SEPARATE_KERNEL") {
+			separate_kernel = op_lexical_cast<bool>(val);
+		} else if (str == "SEPARATE_CPU") {
+			separate_cpu = op_lexical_cast<bool>(val);
+		} else if (str == "SEPARATE_THREAD") {
+			separate_thread = op_lexical_cast<bool>(val);
+		} else if (str == "CALLGRAPH") {
+			callgraph_depth = op_lexical_cast<unsigned int>(val);
+		} else if (str == "BUF_WATERSHED") {
+			buffer_watershed = op_lexical_cast<unsigned int>(val);
+		} else if (str == "CPU_BUF_SIZE") {
+			cpu_buffer_size = op_lexical_cast<unsigned int>(val);
+		}
+	}
+}
+
+
+istream & operator>>(istream & in, config_setting & object)
+{
+	object.load(in);
+	return in;
+}
diff --git a/gui/oprof_start_config.h b/gui/oprof_start_config.h
new file mode 100644
index 0000000..07b25d8
--- /dev/null
+++ b/gui/oprof_start_config.h
@@ -0,0 +1,56 @@
+/**
+ * @file oprof_start_config.h
+ * GUI startup config management
+ *
+ * @remark Copyright 2002 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author John Levon
+ * @author Philippe Elie
+ */
+
+#ifndef OPROF_START_CONFIG_H
+#define OPROF_START_CONFIG_H
+
+#include <sys/types.h>
+#include <string>
+#include <iosfwd>
+
+/// Store the setup of one event
+struct event_setting {
+
+	event_setting();
+
+	uint count;
+	uint umask;
+	bool os_ring_count;
+	bool user_ring_count;
+};
+
+/**
+ * Store the general  configuration of the profiler.
+ * There is no save(), instead opcontrol --setup must be
+ * called. This uses opcontrol's daemonrc file.
+ */
+struct config_setting {
+	config_setting();
+
+	void load(std::istream & in);
+
+	uint buffer_size;
+	uint note_table_size;
+	std::string kernel_filename;
+	bool no_kernel;
+	bool verbose;
+	bool separate_lib;
+	bool separate_kernel;
+	bool separate_cpu;
+	bool separate_thread;
+	uint callgraph_depth;
+	uint buffer_watershed;
+	uint cpu_buffer_size;
+};
+
+std::istream & operator>>(std::istream & in, config_setting & object);
+
+#endif // ! OPROF_START_CONFIG_H
diff --git a/gui/oprof_start_main.cpp b/gui/oprof_start_main.cpp
new file mode 100644
index 0000000..44da5de
--- /dev/null
+++ b/gui/oprof_start_main.cpp
@@ -0,0 +1,27 @@
+/**
+ * @file oprof_start_main.cpp
+ * main routine for GUI start
+ *
+ * @remark Copyright 2002 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author Philippe Elie
+ * @author John Levon
+ */
+
+#include <qapplication.h>
+
+#include "oprof_start.h"
+
+int main(int argc, char* argv[])
+{
+	QApplication a(argc, argv);
+
+	oprof_start* dlg = new oprof_start();
+
+	a.setMainWidget(dlg);
+
+	dlg->show();
+
+	return a.exec();
+}
diff --git a/gui/oprof_start_util.cpp b/gui/oprof_start_util.cpp
new file mode 100644
index 0000000..d293431
--- /dev/null
+++ b/gui/oprof_start_util.cpp
@@ -0,0 +1,331 @@
+/**
+ * @file oprof_start_util.cpp
+ * Miscellaneous helpers for the GUI start
+ *
+ * @remark Copyright 2002 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author Philippe Elie
+ * @author John Levon
+ */
+
+#include <dirent.h>
+#include <unistd.h>
+#include <glob.h>
+
+#include <cerrno>
+#include <vector>
+#include <cmath>
+#include <sstream>
+#include <iostream>
+#include <fstream>
+#include <cstdlib>
+
+#include <qfiledialog.h>
+#include <qmessagebox.h>
+
+#include "op_file.h"
+#include "file_manip.h"
+#include "child_reader.h"
+#include "op_libiberty.h"
+
+#include "oprof_start.h"
+#include "oprof_start_util.h"
+
+using namespace std;
+
+namespace {
+
+// return the ~ expansion suffixed with a '/'
+string const get_config_dir()
+{
+	return "/root";
+}
+
+string daemon_pid;
+
+} // namespace anon
+
+daemon_status::daemon_status()
+	: running(false),
+	  nr_interrupts(0)
+{
+	int HZ;
+	if (!daemon_pid.empty()) {
+		string proc_filename = string("/proc/") + daemon_pid + "/exe";
+		string const exec = op_realpath(proc_filename);
+		if (exec == proc_filename)
+			daemon_pid.erase();
+		else
+			running = true;
+	}
+
+	if (daemon_pid.empty()) {
+		DIR * dir;
+		struct dirent * dirent;
+
+		if (!(dir = opendir("/proc"))) {
+			perror("oprofiled: /proc directory could not be opened. ");
+			exit(EXIT_FAILURE);
+		}
+
+		while ((dirent = readdir(dir))) {
+			string const exec =
+				op_realpath(string("/proc/")
+				               + dirent->d_name + "/exe");
+			string const name = op_basename(exec);
+			if (name != "oprofiled")
+				continue;
+
+			daemon_pid = dirent->d_name;
+			running = true;
+		}
+
+		closedir(dir);
+	}
+
+	HZ = sysconf(_SC_CLK_TCK);
+	if (HZ == -1) {
+		perror("oprofiled: Unable to determine clock ticks per second. ");
+		exit(EXIT_FAILURE);
+	}
+
+	if (daemon_pid.empty())
+		return;
+
+	nr_interrupts = 0;
+
+	switch (op_get_interface()) {
+	case OP_INTERFACE_24:
+		{
+			ifstream ifs3("/proc/sys/dev/oprofile/nr_interrupts");
+			if (ifs3)
+				ifs3 >> nr_interrupts;
+		}
+		break;
+	case OP_INTERFACE_26:
+		{
+			static unsigned int old_sum_interrupts;
+			unsigned int sum_interrupts = 0;
+			glob_t file_names;
+
+			file_names.gl_offs = 0;
+			glob("/dev/oprofile/stats/cpu*/sample_received",
+			     GLOB_DOOFFS, NULL, &file_names);
+
+			for (size_t i = 0; i < file_names.gl_pathc; ++i) {
+				ifstream ifs3(file_names.gl_pathv[i]);
+				if (ifs3) {
+					unsigned int file_interrupts;
+					ifs3 >> file_interrupts;
+					sum_interrupts += file_interrupts;
+				}
+			}
+			if (old_sum_interrupts > sum_interrupts)
+				// occur if we stop/restart daemon.
+				old_sum_interrupts = 0;
+			nr_interrupts = sum_interrupts - old_sum_interrupts;
+			old_sum_interrupts = sum_interrupts;
+			globfree(&file_names);
+		}
+		break;
+	default:
+		break;
+	}
+}
+
+
+/**
+ * get_config_filename - get absolute filename of file in user $HOME
+ * @param filename  the relative filename
+ *
+ * Get the absolute path of a file in a user's home directory.
+ */
+string const get_config_filename(string const & filename)
+{
+	return get_config_dir() + "/" + filename;
+}
+
+
+/**
+ * check_and_create_config_dir - make sure config dir is accessible
+ *
+ * Returns %true if the dir is accessible.
+ */
+bool check_and_create_config_dir()
+{
+	string dir = get_config_filename(".oprofile");
+
+	char * name = xstrdup(dir.c_str());
+
+	if (create_dir(name)) {
+		ostringstream out;
+		out << "unable to create " << dir << " directory ";
+		out << "cause: " << strerror(errno);
+		QMessageBox::warning(0, 0, out.str().c_str());
+
+		free(name);
+
+		return false;
+	}
+
+	free(name);
+	return true;
+}
+
+
+/**
+ * format - re-format a string
+ * @param orig  string to format
+ * @param maxlen  width of line
+ *
+ * Re-formats a string to fit into a certain width,
+ * breaking lines at spaces between words.
+ *
+ * Returns the formatted string
+ */
+string const format(string const & orig, uint const maxlen)
+{
+	string text(orig);
+
+	istringstream ss(text);
+	vector<string> lines;
+
+	string oline;
+	string line;
+
+	while (getline(ss, oline)) {
+		if (line.size() + oline.size() < maxlen) {
+			lines.push_back(line + oline);
+			line.erase();
+		} else {
+			lines.push_back(line);
+			line.erase();
+			string s;
+			string word;
+			istringstream oss(oline);
+			while (oss >> word) {
+				if (line.size() + word.size() > maxlen) {
+					lines.push_back(line);
+					line.erase();
+				}
+				line += word + " ";
+			}
+		}
+	}
+
+	if (line.size())
+		lines.push_back(line);
+
+	string ret;
+
+	for(vector<string>::const_iterator it = lines.begin(); it != lines.end(); ++it)
+		ret += *it + "\n";
+
+	return ret;
+}
+
+
+/**
+ * do_exec_command - execute a command
+ * @param cmd  command name
+ * @param args  arguments to command
+ *
+ * Execute a command synchronously. An error message is shown
+ * if the command returns a non-zero status, which is also returned.
+ *
+ * The arguments are verified and will refuse to execute if they contain
+ * shell metacharacters.
+ */
+int do_exec_command(string const & cmd, vector<string> const & args)
+{
+	ostringstream err;
+	bool ok = true;
+
+	// verify arguments
+	for (vector<string>::const_iterator cit = args.begin();
+		cit != args.end(); ++cit) {
+		if (verify_argument(*cit))
+			continue;
+
+		QMessageBox::warning(0, 0,
+			string(
+			"Could not execute: Argument \"" + *cit +
+			"\" contains shell metacharacters.\n").c_str());
+		return EINVAL;
+	}
+
+	child_reader reader(cmd, args);
+	if (reader.error())
+		ok = false;
+
+	if (ok)
+		reader.get_data(cout, err);
+
+	int ret = reader.terminate_process();
+	if (ret) {
+		string error = reader.error_str() + "\n";
+		error += "Failed: \n" + err.str() + "\n";
+		string cmdline = cmd;
+		for (vector<string>::const_iterator cit = args.begin();
+		     cit != args.end(); ++cit) {
+			cmdline += " " + *cit + " ";
+		}
+		error += "\n\nCommand was :\n\n" + cmdline + "\n";
+
+		QMessageBox::warning(0, 0, format(error, 50).c_str());
+	}
+
+	return ret;
+}
+
+
+/**
+ * do_open_file_or_dir - open file/directory
+ * @param base_dir  directory to start at
+ * @param dir_only  directory or filename to select
+ *
+ * Select a file or directory. The selection is returned;
+ * an empty string if the selection was cancelled.
+ */
+string const do_open_file_or_dir(string const & base_dir, bool dir_only)
+{
+	QString result;
+
+	if (dir_only) {
+		result = QFileDialog::getExistingDirectory(base_dir.c_str(), 0,
+			"open_file_or_dir", "Get directory name", true);
+	} else {
+		result = QFileDialog::getOpenFileName(base_dir.c_str(), 0, 0,
+			"open_file_or_dir", "Get filename");
+	}
+
+	if (result.isNull())
+		return string();
+	else
+		return result.latin1();
+}
+
+/**
+ * verify_argument - check string for potentially dangerous characters
+ *
+ * This function returns false if the string contains dangerous shell
+ * metacharacters.
+ *
+ * WWW Security FAQ dangerous chars:
+ *
+ * & ; ` ' \ " | * ? ~ < > ^ ( ) [ ] { } $ \n \r
+ *
+ * David Wheeler: ! #
+ *
+ * We allow '-' because we disallow whitespace. We allow ':' and '='
+ */
+bool verify_argument(string const & str)
+{
+	if (str.find_first_not_of(
+		"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+		"abcdefghijklmnopqrstuvwxyz0123456789_:=-+%,./")
+		!= string::npos)
+		return false;
+	return true;
+}
diff --git a/gui/oprof_start_util.h b/gui/oprof_start_util.h
new file mode 100644
index 0000000..cce646d
--- /dev/null
+++ b/gui/oprof_start_util.h
@@ -0,0 +1,39 @@
+/**
+ * @file oprof_start_util.h
+ * Miscellaneous helpers for the GUI start
+ *
+ * @remark Copyright 2002 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author Philippe Elie
+ * @author John Levon
+ */
+
+#ifndef OPROF_START_UTIL_H
+#define OPROF_START_UTIL_H
+
+#include <cmath>
+#include <string>
+#include <vector>
+
+/// Store various daemon status data
+struct daemon_status {
+	/// fill various data member according to the current daemon status
+	daemon_status();
+	bool running;			///< true if daemon is running
+	unsigned int nr_interrupts;	///< nr_interrupts from profiling start
+};
+
+inline double ratio(double x1, double x2)
+{
+	return fabs(((x1 - x2) / x2)) * 100;
+}
+
+std::string const get_config_filename(std::string const & filename);
+bool check_and_create_config_dir();
+std::string const format(std::string const & orig, uint const maxlen);
+int do_exec_command(std::string const & cmd, std::vector<std::string> const & args = std::vector<std::string>());
+std::string const do_open_file_or_dir(std::string const & base_dir, bool dir_only);
+bool verify_argument(std::string const & str);
+
+#endif // OPROF_START_UTIL_H
diff --git a/gui/ui/Makefile.am b/gui/ui/Makefile.am
new file mode 100644
index 0000000..387ef4e
--- /dev/null
+++ b/gui/ui/Makefile.am
@@ -0,0 +1,24 @@
+EXTRA_DIST = oprof_start.base.ui
+
+if have_qt
+
+AM_CPPFLAGS = @QT_INCLUDES@
+
+AM_CXXFLAGS = @OP_CXXFLAGS@
+
+noinst_LIBRARIES = liboprof_start.a
+nodist_liboprof_start_a_SOURCES = oprof_start.base.cpp oprof_start.base.moc.cpp
+
+oprof_start.base.h: oprof_start.base.ui
+	$(UIC) -o $@ $<
+
+oprof_start.base.cpp: oprof_start.base.h oprof_start.base.ui
+	$(UIC) -o $@ -impl $^
+
+oprof_start.base.moc.cpp: oprof_start.base.h
+	$(MOC) -o $@ $<
+
+clean-local:
+	rm -f oprof_start.base.h oprof_start.base.cpp oprof_start.base.moc.cpp
+
+endif
diff --git a/gui/ui/Makefile.in b/gui/ui/Makefile.in
new file mode 100644
index 0000000..020db85
--- /dev/null
+++ b/gui/ui/Makefile.in
@@ -0,0 +1,493 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = gui/ui
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/binutils.m4 \
+	$(top_srcdir)/m4/builtinexpect.m4 \
+	$(top_srcdir)/m4/cellspubfdsupport.m4 \
+	$(top_srcdir)/m4/compileroption.m4 \
+	$(top_srcdir)/m4/configmodule.m4 \
+	$(top_srcdir)/m4/copyifchange.m4 $(top_srcdir)/m4/docbook.m4 \
+	$(top_srcdir)/m4/extradirs.m4 $(top_srcdir)/m4/findkernel.m4 \
+	$(top_srcdir)/m4/kerneloption.m4 \
+	$(top_srcdir)/m4/kernelversion.m4 \
+	$(top_srcdir)/m4/mallocattribute.m4 \
+	$(top_srcdir)/m4/poptconst.m4 \
+	$(top_srcdir)/m4/precompiledheader.m4 $(top_srcdir)/m4/qt.m4 \
+	$(top_srcdir)/m4/resultyn.m4 $(top_srcdir)/m4/sstream.m4 \
+	$(top_srcdir)/m4/typedef.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+liboprof_start_a_AR = $(AR) $(ARFLAGS)
+liboprof_start_a_LIBADD =
+@have_qt_TRUE@nodist_liboprof_start_a_OBJECTS =  \
+@have_qt_TRUE@	oprof_start.base.$(OBJEXT) \
+@have_qt_TRUE@	oprof_start.base.moc.$(OBJEXT)
+liboprof_start_a_OBJECTS = $(nodist_liboprof_start_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(nodist_liboprof_start_a_SOURCES)
+DIST_SOURCES =
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BFD_LIBS = @BFD_LIBS@
+BUILD_JVMPI_AGENT_FALSE = @BUILD_JVMPI_AGENT_FALSE@
+BUILD_JVMPI_AGENT_TRUE = @BUILD_JVMPI_AGENT_TRUE@
+BUILD_JVMTI_AGENT_FALSE = @BUILD_JVMTI_AGENT_FALSE@
+BUILD_JVMTI_AGENT_TRUE = @BUILD_JVMTI_AGENT_TRUE@
+CAT_ENTRY_END = @CAT_ENTRY_END@
+CAT_ENTRY_START = @CAT_ENTRY_START@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATE = @DATE@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOCBOOK_ROOT = @DOCBOOK_ROOT@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_CFLAGS_MODULE = @EXTRA_CFLAGS_MODULE@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAVA_HOMEDIR = @JAVA_HOMEDIR@
+KINC = @KINC@
+KSRC = @KSRC@
+KVERS = @KVERS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBERTY_LIBS = @LIBERTY_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MOC = @MOC@
+MODINSTALLDIR = @MODINSTALLDIR@
+OBJEXT = @OBJEXT@
+OPROFILE_DIR = @OPROFILE_DIR@
+OPROFILE_MODULE_ARCH = @OPROFILE_MODULE_ARCH@
+OP_CFLAGS = @OP_CFLAGS@
+OP_CXXFLAGS = @OP_CXXFLAGS@
+OP_DOCDIR = @OP_DOCDIR@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+POPT_LIBS = @POPT_LIBS@
+PTRDIFF_T_TYPE = @PTRDIFF_T_TYPE@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+QT_LIB = @QT_LIB@
+QT_VERSION = @QT_VERSION@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIZE_T_TYPE = @SIZE_T_TYPE@
+STRIP = @STRIP@
+UIC = @UIC@
+VERSION = @VERSION@
+XML_CATALOG = @XML_CATALOG@
+XSLTPROC = @XSLTPROC@
+XSLTPROC_FLAGS = @XSLTPROC_FLAGS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+have_qt_FALSE = @have_qt_FALSE@
+have_qt_TRUE = @have_qt_TRUE@
+have_xsltproc_FALSE = @have_xsltproc_FALSE@
+have_xsltproc_TRUE = @have_xsltproc_TRUE@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kernel_support_FALSE = @kernel_support_FALSE@
+kernel_support_TRUE = @kernel_support_TRUE@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+topdir = @topdir@
+EXTRA_DIST = oprof_start.base.ui
+@have_qt_TRUE@AM_CPPFLAGS = @QT_INCLUDES@
+@have_qt_TRUE@AM_CXXFLAGS = @OP_CXXFLAGS@
+@have_qt_TRUE@noinst_LIBRARIES = liboprof_start.a
+@have_qt_TRUE@nodist_liboprof_start_a_SOURCES = oprof_start.base.cpp oprof_start.base.moc.cpp
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  gui/ui/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign  gui/ui/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+liboprof_start.a: $(liboprof_start_a_OBJECTS) $(liboprof_start_a_DEPENDENCIES) 
+	-rm -f liboprof_start.a
+	$(liboprof_start_a_AR) liboprof_start.a $(liboprof_start_a_OBJECTS) $(liboprof_start_a_LIBADD)
+	$(RANLIB) liboprof_start.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oprof_start.base.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oprof_start.base.moc.Po@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+@have_qt_FALSE@clean-local:
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+	clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-local clean-noinstLIBRARIES ctags \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am
+
+
+@have_qt_TRUE@oprof_start.base.h: oprof_start.base.ui
+@have_qt_TRUE@	$(UIC) -o $@ $<
+
+@have_qt_TRUE@oprof_start.base.cpp: oprof_start.base.h oprof_start.base.ui
+@have_qt_TRUE@	$(UIC) -o $@ -impl $^
+
+@have_qt_TRUE@oprof_start.base.moc.cpp: oprof_start.base.h
+@have_qt_TRUE@	$(MOC) -o $@ $<
+
+@have_qt_TRUE@clean-local:
+@have_qt_TRUE@	rm -f oprof_start.base.h oprof_start.base.cpp oprof_start.base.moc.cpp
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gui/ui/oprof_start.base.ui b/gui/ui/oprof_start.base.ui
new file mode 100644
index 0000000..4fcc43f
--- /dev/null
+++ b/gui/ui/oprof_start.base.ui
@@ -0,0 +1,1190 @@
+<!DOCTYPE UI><UI>
+<class>oprof_start_base</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>oprof_start_base</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>625</width>
+            <height>735</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Start profiler</string>
+    </property>
+    <property stdset="1">
+        <name>sizeGripEnabled</name>
+        <bool>true</bool>
+    </property>
+    <vbox>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget>
+            <class>QTabWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>setup_config_tab</cstring>
+            </property>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>counter_setup_page</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>&amp;Setup</string>
+                </attribute>
+                <vbox>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget>
+                        <class>QGroupBox</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>counter_group</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>title</name>
+                            <string>Events</string>
+                        </property>
+                        <vbox>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>11</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget>
+                                <class>QLayoutWidget</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Layout10</cstring>
+                                </property>
+                                <hbox>
+                                    <property stdset="1">
+                                        <name>margin</name>
+                                        <number>0</number>
+                                    </property>
+                                    <property stdset="1">
+                                        <name>spacing</name>
+                                        <number>6</number>
+                                    </property>
+                                    <widget>
+                                        <class>QListView</class>
+                                        <column>
+                                            <property>
+                                                <name>text</name>
+                                                <string>Removedincode</string>
+                                            </property>
+                                            <property>
+                                                <name>clickable</name>
+                                                <bool>false</bool>
+                                            </property>
+                                            <property>
+                                                <name>resizeable</name>
+                                                <bool>true</bool>
+                                            </property>
+                                        </column>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>events_list</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>minimumSize</name>
+                                            <size>
+                                                <width>250</width>
+                                                <height>0</height>
+                                            </size>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>selectionMode</name>
+                                            <enum>Multi</enum>
+                                        </property>
+                                        <property>
+                                            <name>toolTip</name>
+                                            <string>Available events</string>
+                                        </property>
+                                    </widget>
+                                    <widget>
+                                        <class>QLayoutWidget</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>Layout9</cstring>
+                                        </property>
+                                        <vbox>
+                                            <property stdset="1">
+                                                <name>margin</name>
+                                                <number>0</number>
+                                            </property>
+                                            <property stdset="1">
+                                                <name>spacing</name>
+                                                <number>6</number>
+                                            </property>
+                                            <widget>
+                                                <class>QCheckBox</class>
+                                                <property stdset="1">
+                                                    <name>name</name>
+                                                    <cstring>os_ring_count_cb</cstring>
+                                                </property>
+                                                <property stdset="1">
+                                                    <name>text</name>
+                                                    <string>Profile &amp;kernel</string>
+                                                </property>
+                                                <property>
+                                                    <name>toolTip</name>
+                                                    <string>Profile kernel code</string>
+                                                </property>
+                                            </widget>
+                                            <widget>
+                                                <class>QCheckBox</class>
+                                                <property stdset="1">
+                                                    <name>name</name>
+                                                    <cstring>user_ring_count_cb</cstring>
+                                                </property>
+                                                <property stdset="1">
+                                                    <name>text</name>
+                                                    <string>Profile &amp;user binaries</string>
+                                                </property>
+                                                <property>
+                                                    <name>toolTip</name>
+                                                    <string>Profile user libraries and applications</string>
+                                                </property>
+                                            </widget>
+                                            <widget>
+                                                <class>QLayoutWidget</class>
+                                                <property stdset="1">
+                                                    <name>name</name>
+                                                    <cstring>Layout16</cstring>
+                                                </property>
+                                                <hbox>
+                                                    <property stdset="1">
+                                                        <name>margin</name>
+                                                        <number>0</number>
+                                                    </property>
+                                                    <property stdset="1">
+                                                        <name>spacing</name>
+                                                        <number>6</number>
+                                                    </property>
+                                                    <widget>
+                                                        <class>QLabel</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>TextLabel1_2</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>C&amp;ount</string>
+                                                        </property>
+                                                        <property>
+                                                            <name>buddy</name>
+                                                            <cstring>event_count_edit</cstring>
+                                                        </property>
+                                                    </widget>
+                                                    <widget>
+                                                        <class>QLineEdit</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>event_count_edit</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>sizePolicy</name>
+                                                            <sizepolicy>
+                                                                <hsizetype>1</hsizetype>
+                                                                <vsizetype>0</vsizetype>
+                                                            </sizepolicy>
+                                                        </property>
+                                                        <property>
+                                                            <name>toolTip</name>
+                                                            <string>Set the count value</string>
+                                                        </property>
+                                                    </widget>
+                                                    <spacer>
+                                                        <property>
+                                                            <name>name</name>
+                                                            <cstring>Spacer13_2</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>orientation</name>
+                                                            <enum>Horizontal</enum>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>sizeType</name>
+                                                            <enum>Expanding</enum>
+                                                        </property>
+                                                        <property>
+                                                            <name>sizeHint</name>
+                                                            <size>
+                                                                <width>20</width>
+                                                                <height>20</height>
+                                                            </size>
+                                                        </property>
+                                                    </spacer>
+                                                </hbox>
+                                            </widget>
+                                            <widget>
+                                                <class>QButtonGroup</class>
+                                                <property stdset="1">
+                                                    <name>name</name>
+                                                    <cstring>unit_mask_group</cstring>
+                                                </property>
+                                                <property stdset="1">
+                                                    <name>sizePolicy</name>
+                                                    <sizepolicy>
+                                                        <hsizetype>1</hsizetype>
+                                                        <vsizetype>5</vsizetype>
+                                                    </sizepolicy>
+                                                </property>
+                                                <property stdset="1">
+                                                    <name>title</name>
+                                                    <string>Unit mask</string>
+                                                </property>
+                                                <property>
+                                                    <name>toolTip</name>
+                                                    <string>Unit mask settings for this event</string>
+                                                </property>
+                                                <grid>
+                                                    <property stdset="1">
+                                                        <name>margin</name>
+                                                        <number>11</number>
+                                                    </property>
+                                                    <property stdset="1">
+                                                        <name>spacing</name>
+                                                        <number>6</number>
+                                                    </property>
+                                                    <widget row="0"  column="0" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check0</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check0</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="1"  column="0"  rowspan="2"  colspan="2" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check1</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check1</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="3"  column="0"  rowspan="2"  colspan="2" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check2</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check2</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="5"  column="0" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check3</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check3</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="6"  column="0" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check4</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check4</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="7"  column="0" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check5</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check5</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="8"  column="0"  rowspan="2"  colspan="2" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check6</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check6</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="10"  column="0" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check7</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check7</string>
+                                                        </property>
+                                                    </widget>
+                                                    <spacer row="11"  column="1" >
+                                                        <property>
+                                                            <name>name</name>
+                                                            <cstring>Spacer14</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>orientation</name>
+                                                            <enum>Vertical</enum>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>sizeType</name>
+                                                            <enum>Expanding</enum>
+                                                        </property>
+                                                        <property>
+                                                            <name>sizeHint</name>
+                                                            <size>
+                                                                <width>20</width>
+                                                                <height>20</height>
+                                                            </size>
+                                                        </property>
+                                                    </spacer>
+                                                    <widget row="5"  column="1" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check11</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check11</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="7"  column="1" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check13</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check13</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="10"  column="1" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check15</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check15</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="4"  column="1" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check10</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check10</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="9"  column="1" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check14</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check14</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="2"  column="1" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check9</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check9</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="0"  column="1" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check8</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check8</string>
+                                                        </property>
+                                                    </widget>
+                                                    <widget row="6"  column="1" >
+                                                        <class>QCheckBox</class>
+                                                        <property stdset="1">
+                                                            <name>name</name>
+                                                            <cstring>check12</cstring>
+                                                        </property>
+                                                        <property stdset="1">
+                                                            <name>text</name>
+                                                            <string>check12</string>
+                                                        </property>
+                                                    </widget>
+                                                </grid>
+                                            </widget>
+                                        </vbox>
+                                    </widget>
+                                </hbox>
+                            </widget>
+                            <widget>
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>event_help_label</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizePolicy</name>
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>1</vsizetype>
+                                    </sizepolicy>
+                                </property>
+                                <property stdset="1">
+                                    <name>frameShape</name>
+                                    <enum>WinPanel</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>frameShadow</name>
+                                    <enum>Sunken</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string></string>
+                                </property>
+                            </widget>
+                        </vbox>
+                    </widget>
+                </vbox>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>configuration_page</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>&amp;Configuration</string>
+                </attribute>
+                <vbox>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget>
+                        <class>QLayoutWidget</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Layout11</cstring>
+                        </property>
+                        <hbox>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>0</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget>
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel1</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>&amp;Kernel image file</string>
+                                </property>
+                                <property>
+                                    <name>buddy</name>
+                                    <cstring>kernel_filename_edit</cstring>
+                                </property>
+                            </widget>
+                            <widget>
+                                <class>QLineEdit</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>kernel_filename_edit</cstring>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>The vmlinux file of the running kernel</string>
+                                </property>
+                            </widget>
+                            <widget>
+                                <class>QToolButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>kernel_filename_tb</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>...</string>
+                                </property>
+                            </widget>
+                            <widget>
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>no_vmlinux</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>No kernel image</string>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>No kernel image available. Disables kernel profiling.</string>
+                                </property>
+                            </widget>
+                        </hbox>
+                    </widget>
+                    <widget>
+                        <class>QLayoutWidget</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Layout12</cstring>
+                        </property>
+                        <hbox>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>0</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget>
+                                <class>QLayoutWidget</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Layout11</cstring>
+                                </property>
+                                <grid>
+                                    <property stdset="1">
+                                        <name>margin</name>
+                                        <number>0</number>
+                                    </property>
+                                    <property stdset="1">
+                                        <name>spacing</name>
+                                        <number>6</number>
+                                    </property>
+                                    <widget row="0"  column="1" >
+                                        <class>QLineEdit</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>buffer_size_edit</cstring>
+                                        </property>
+                                        <property>
+                                            <name>toolTip</name>
+                                            <string>The size of the profiler's buffers</string>
+                                        </property>
+                                    </widget>
+                                    <widget row="1"  column="1" >
+                                        <class>QLineEdit</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>note_table_size_edit</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget row="3"  column="0" >
+                                        <class>QLabel</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>cpu_buffer_size_label</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>Cpu buffer size</string>
+                                        </property>
+                                        <property>
+                                            <name>buddy</name>
+                                            <cstring>cpu_buffer_size_edit</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget row="3"  column="1" >
+                                        <class>QLineEdit</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>cpu_buffer_size_edit</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget row="0"  column="0" >
+                                        <class>QLabel</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>buffer_size_label</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>&amp;Buffer size</string>
+                                        </property>
+                                        <property>
+                                            <name>buddy</name>
+                                            <cstring>buffer_size_edit</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget row="1"  column="0" >
+                                        <class>QLabel</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>note_table_size_label</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>Note Size</string>
+                                        </property>
+                                        <property>
+                                            <name>buddy</name>
+                                            <cstring>note_table_size_edit</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget row="2"  column="1" >
+                                        <class>QLineEdit</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>buffer_watershed_edit</cstring>
+                                        </property>
+                                    </widget>
+                                    <widget row="2"  column="0" >
+                                        <class>QLabel</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>buffer_watershed_label</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>Buffer watershed</string>
+                                        </property>
+                                        <property>
+                                            <name>buddy</name>
+                                            <cstring>buffer_watershed_edit</cstring>
+                                        </property>
+                                    </widget>
+                                </grid>
+                            </widget>
+                            <spacer>
+                                <property>
+                                    <name>name</name>
+                                    <cstring>Spacer11</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>orientation</name>
+                                    <enum>Horizontal</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizeType</name>
+                                    <enum>Expanding</enum>
+                                </property>
+                                <property>
+                                    <name>sizeHint</name>
+                                    <size>
+                                        <width>20</width>
+                                        <height>20</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                        </hbox>
+                    </widget>
+                    <widget>
+                        <class>QLayoutWidget</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Layout36</cstring>
+                        </property>
+                        <grid>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>0</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget row="0"  column="0" >
+                                <class>QLayoutWidget</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Layout34</cstring>
+                                </property>
+                                <vbox>
+                                    <property stdset="1">
+                                        <name>margin</name>
+                                        <number>0</number>
+                                    </property>
+                                    <property stdset="1">
+                                        <name>spacing</name>
+                                        <number>6</number>
+                                    </property>
+                                    <widget>
+                                        <class>QCheckBox</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>verbose</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>&amp;Verbose</string>
+                                        </property>
+                                        <property>
+                                            <name>toolTip</name>
+                                            <string>Very verbose output in log file</string>
+                                        </property>
+                                    </widget>
+                                    <widget>
+                                        <class>QCheckBox</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>separate_lib_cb</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>Per-application profiles</string>
+                                        </property>
+                                        <property>
+                                            <name>toolTip</name>
+                                            <string>Separate samples for each shared library. This increases the time and space overhead of OProfile.</string>
+                                        </property>
+                                    </widget>
+                                    <widget>
+                                        <class>QCheckBox</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>separate_kernel_cb</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>Per-application profiles, including kernel</string>
+                                        </property>
+                                        <property>
+                                            <name>toolTip</name>
+                                            <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
+                                        </property>
+                                    </widget>
+                                    <widget>
+                                        <class>QCheckBox</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>separate_cpu_cb</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>Per-CPU profiles</string>
+                                        </property>
+                                        <property>
+                                            <name>toolTip</name>
+                                            <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
+                                        </property>
+                                    </widget>
+                                    <widget>
+                                        <class>QCheckBox</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>separate_thread_cb</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>Per-thread/task profiles</string>
+                                        </property>
+                                        <property>
+                                            <name>toolTip</name>
+                                            <string>Separate samples for each shared library and kernel samples. This increases the time and space overhead of OProfile.</string>
+                                        </property>
+                                    </widget>
+                                    <widget>
+                                        <class>QLayoutWidget</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>Layout33</cstring>
+                                        </property>
+                                        <hbox>
+                                            <property stdset="1">
+                                                <name>margin</name>
+                                                <number>0</number>
+                                            </property>
+                                            <property stdset="1">
+                                                <name>spacing</name>
+                                                <number>6</number>
+                                            </property>
+                                            <widget>
+                                                <class>QLabel</class>
+                                                <property stdset="1">
+                                                    <name>name</name>
+                                                    <cstring>callgraph_depth_label</cstring>
+                                                </property>
+                                                <property stdset="1">
+                                                    <name>text</name>
+                                                    <string>callgraph depth, zero to disable</string>
+                                                </property>
+                                                <property>
+                                                    <name>buddy</name>
+                                                    <cstring>callgraph_depth_edit</cstring>
+                                                </property>
+                                            </widget>
+                                            <widget>
+                                                <class>QLineEdit</class>
+                                                <property stdset="1">
+                                                    <name>name</name>
+                                                    <cstring>callgraph_depth_edit</cstring>
+                                                </property>
+                                            </widget>
+                                        </hbox>
+                                    </widget>
+                                </vbox>
+                            </widget>
+                            <spacer row="0"  column="1" >
+                                <property>
+                                    <name>name</name>
+                                    <cstring>Spacer12</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>orientation</name>
+                                    <enum>Horizontal</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizeType</name>
+                                    <enum>Expanding</enum>
+                                </property>
+                                <property>
+                                    <name>sizeHint</name>
+                                    <size>
+                                        <width>20</width>
+                                        <height>20</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                        </grid>
+                    </widget>
+                    <spacer>
+                        <property>
+                            <name>name</name>
+                            <cstring>Spacer9</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>orientation</name>
+                            <enum>Vertical</enum>
+                        </property>
+                        <property stdset="1">
+                            <name>sizeType</name>
+                            <enum>Expanding</enum>
+                        </property>
+                        <property>
+                            <name>sizeHint</name>
+                            <size>
+                                <width>20</width>
+                                <height>20</height>
+                            </size>
+                        </property>
+                    </spacer>
+                </vbox>
+            </widget>
+        </widget>
+        <widget>
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>daemon_label</cstring>
+            </property>
+            <property stdset="1">
+                <name>frameShape</name>
+                <enum>Panel</enum>
+            </property>
+            <property stdset="1">
+                <name>frameShadow</name>
+                <enum>Sunken</enum>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string></string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Current daemon status</string>
+            </property>
+        </widget>
+        <widget>
+            <class>QLayoutWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Layout37</cstring>
+            </property>
+            <hbox>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>0</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>start_profiler_btn</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>St&amp;art</string>
+                    </property>
+                </widget>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>flush_profiler_data_btn</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Flush</string>
+                    </property>
+                </widget>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>stop_profiler_btn</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Stop</string>
+                    </property>
+                </widget>
+                <spacer>
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer5</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>reset_sample_files_btn</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Reset sample files</string>
+                    </property>
+                </widget>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>quit_and_save_btn</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Save and &amp;quit</string>
+                    </property>
+                    <property stdset="1">
+                        <name>autoDefault</name>
+                        <bool>true</bool>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+    </vbox>
+</widget>
+<connections>
+    <connection>
+        <sender>start_profiler_btn</sender>
+        <signal>clicked()</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>on_start_profiler()</slot>
+    </connection>
+    <connection>
+        <sender>stop_profiler_btn</sender>
+        <signal>clicked()</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>on_stop_profiler()</slot>
+    </connection>
+    <connection>
+        <sender>flush_profiler_data_btn</sender>
+        <signal>clicked()</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>on_flush_profiler_data()</slot>
+    </connection>
+    <connection>
+        <sender>quit_and_save_btn</sender>
+        <signal>clicked()</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>kernel_filename_tb</sender>
+        <signal>clicked()</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>choose_kernel_filename()</slot>
+    </connection>
+    <connection>
+        <sender>no_vmlinux</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>kernel_filename_tb</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>no_vmlinux</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>kernel_filename_edit</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>no_vmlinux</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>TextLabel1</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>separate_kernel_cb</sender>
+        <signal>stateChanged(int)</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>on_separate_kernel_cb_changed(int)</slot>
+    </connection>
+    <connection>
+        <sender>reset_sample_files_btn</sender>
+        <signal>clicked()</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>on_reset_sample_files()</slot>
+    </connection>
+    <connection>
+        <sender>events_list</sender>
+        <signal>selectionChanged()</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>event_selected()</slot>
+    </connection>
+    <connection>
+        <sender>events_list</sender>
+        <signal>currentChanged(QListViewItem*)</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>event_over(QListViewItem *)</slot>
+    </connection>
+    <connection>
+        <sender>events_list</sender>
+        <signal>onItem(QListViewItem*)</signal>
+        <receiver>oprof_start_base</receiver>
+        <slot>event_over(QListViewItem *)</slot>
+    </connection>
+    <slot access="protected">choose_kernel_filename()</slot>
+    <slot access="protected">event_over(QListViewItem *)</slot>
+    <slot access="protected">event_selected()</slot>
+    <slot access="protected">on_reset_sample_files()</slot>
+    <slot access="protected">on_flush_profiler_data()</slot>
+    <slot access="protected">on_separate_kernel_cb_changed(int)</slot>
+    <slot access="protected">on_start_profiler()</slot>
+    <slot access="protected">on_stop_profiler()</slot>
+</connections>
+<tabstops>
+    <tabstop>setup_config_tab</tabstop>
+    <tabstop>events_list</tabstop>
+    <tabstop>os_ring_count_cb</tabstop>
+    <tabstop>user_ring_count_cb</tabstop>
+    <tabstop>event_count_edit</tabstop>
+    <tabstop>check0</tabstop>
+    <tabstop>check1</tabstop>
+    <tabstop>check2</tabstop>
+    <tabstop>check3</tabstop>
+    <tabstop>check4</tabstop>
+    <tabstop>check5</tabstop>
+    <tabstop>check6</tabstop>
+    <tabstop>check7</tabstop>
+    <tabstop>check8</tabstop>
+    <tabstop>check9</tabstop>
+    <tabstop>check10</tabstop>
+    <tabstop>check11</tabstop>
+    <tabstop>check12</tabstop>
+    <tabstop>check13</tabstop>
+    <tabstop>check14</tabstop>
+    <tabstop>check15</tabstop>
+    <tabstop>start_profiler_btn</tabstop>
+    <tabstop>flush_profiler_data_btn</tabstop>
+    <tabstop>stop_profiler_btn</tabstop>
+    <tabstop>reset_sample_files_btn</tabstop>
+    <tabstop>quit_and_save_btn</tabstop>
+    <tabstop>kernel_filename_edit</tabstop>
+    <tabstop>no_vmlinux</tabstop>
+    <tabstop>buffer_size_edit</tabstop>
+    <tabstop>note_table_size_edit</tabstop>
+    <tabstop>buffer_watershed_edit</tabstop>
+    <tabstop>verbose</tabstop>
+    <tabstop>separate_lib_cb</tabstop>
+    <tabstop>separate_kernel_cb</tabstop>
+    <tabstop>separate_cpu_cb</tabstop>
+    <tabstop>separate_thread_cb</tabstop>
+    <tabstop>callgraph_depth_edit</tabstop>
+</tabstops>
+</UI>