The recent sys_base implementation breaks some code that uses only
native syscalls without initalizing the library with
pfm_initialize(). This code adds a sys_base check and initializes
sys_base if necessary before the syscall.
Signed-off-by: Robert Richter <[EMAIL PROTECTED]>
---
lib/pfmlib_os_linux.c | 33 +++++++++++++++++++++------------
1 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/lib/pfmlib_os_linux.c b/lib/pfmlib_os_linux.c
index 22b038b..1726602 100644
--- a/lib/pfmlib_os_linux.c
+++ b/lib/pfmlib_os_linux.c
@@ -35,21 +35,30 @@
#include <perfmon/pfmlib.h>
#include "pfmlib_priv.h"
-#define PFM_pfm_create_context (sys_base+0)
-#define PFM_pfm_write_pmcs (sys_base+1)
-#define PFM_pfm_write_pmds (sys_base+2)
-#define PFM_pfm_read_pmds (sys_base+3)
-#define PFM_pfm_load_context (sys_base+4)
-#define PFM_pfm_start (sys_base+5)
-#define PFM_pfm_stop (sys_base+6)
-#define PFM_pfm_restart (sys_base+7)
-#define PFM_pfm_create_evtsets (sys_base+8)
-#define PFM_pfm_getinfo_evtsets (sys_base+9)
-#define PFM_pfm_delete_evtsets (sys_base+10)
-#define PFM_pfm_unload_context (sys_base+11)
+#define PFM_pfm_create_context (_sys_base()+0)
+#define PFM_pfm_write_pmcs (_sys_base()+1)
+#define PFM_pfm_write_pmds (_sys_base()+2)
+#define PFM_pfm_read_pmds (_sys_base()+3)
+#define PFM_pfm_load_context (_sys_base()+4)
+#define PFM_pfm_start (_sys_base()+5)
+#define PFM_pfm_stop (_sys_base()+6)
+#define PFM_pfm_restart (_sys_base()+7)
+#define PFM_pfm_create_evtsets (_sys_base()+8)
+#define PFM_pfm_getinfo_evtsets (_sys_base()+9)
+#define PFM_pfm_delete_evtsets (_sys_base()+10)
+#define PFM_pfm_unload_context (_sys_base()+11)
static int sys_base; /* syscall base */
+void pfm_init_syscalls(void);
+
+static int _sys_base()
+{
+ if (!sys_base)
+ pfm_init_syscalls();
+ return sys_base;
+}
+
/*
* helper function to retrieve one value from /proc/cpuinfo
* for internal libpfm use only
--
1.5.3.7
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
perfmon2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel