update
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Tue, 12 Feb 2008 20:41:38 +0000 (20:41 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Tue, 12 Feb 2008 20:41:38 +0000 (20:41 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@2813 04897980-b3bd-0310-b5e0-8ef037075253

markers-userspace/kernel-api.h
markers-userspace/marker-lib.c

index cb11aecd7f74b793471198868b17f4e70bd28f55..6172ad5240c1c07ae6a4b7c8fb92b568f121e1f0 100644 (file)
@@ -37,7 +37,7 @@ extern "C" {
  */
 #define _imv_read(name)                (name##__imv)
 
-#define __NR_marker             326
+#define __NR_marker             328
 
 #define sys_marker(...) syscall(__NR_marker, __VA_ARGS__)
 
index 739c7580e8f1901519c88b0d34e4be25db2337dd..e5ae4fb8baa174bdbd4832b72a9068b6337dcea2 100644 (file)
@@ -39,17 +39,37 @@ void marker_probe_cb(const struct marker *mdata, void *call_private,
        printf("Test probe function %u\n", count++);
 }
 
+//FIXME : imv_read won't work with optimized immediate values.
+//will need to issue one sys_marker call for each immediate value.
+
 __attribute__((constructor)) void marker_init(void)
 {
        struct marker *iter;
        int ret;
 
-       printf("Marker section : from %p to %p\n",
+       printf("Marker section : from %p to %p (init)\n",
+               __start___markers, __stop___markers);
+       for (iter = __start___markers; iter < __stop___markers; iter++) {
+               printf("Marker : %s\n", iter->name);
+               ret = sys_marker(iter->name, iter->format,
+                       &imv_read(iter->state), 1);
+               if (ret)
+                       perror("Error connecting markers");
+       }
+}
+
+__attribute__((destructor)) void marker_fini(void)
+{
+       struct marker *iter;
+       int ret;
+
+       printf("Marker section : from %p to %p (fini)\n",
                __start___markers, __stop___markers);
-       ret = sys_marker(__start___markers, __stop___markers);
-       if (ret)
-               perror("Error connecting markers");
        for (iter = __start___markers; iter < __stop___markers; iter++) {
                printf("Marker : %s\n", iter->name);
+               ret = sys_marker(iter->name, iter->format,
+                       &imv_read(iter->state), 0);
+               if (ret)
+                       perror("Error disconnecting markers");
        }
 }
This page took 0.02794 seconds and 4 git commands to generate.