]> sourceware.org Git - systemtap.git/commitdiff
2007-03-12 Frank Ch. Eigler <fche@elastic.org>
authorfche <fche>
Mon, 12 Mar 2007 18:28:47 +0000 (18:28 +0000)
committerfche <fche>
Mon, 12 Mar 2007 18:28:47 +0000 (18:28 +0000)
* librelay.c (init_stp): Use /proc/MODULE rather than
/proc/systemtap/MODULE.

2007-03-12  Frank Ch. Eigler  <fche@elastic.org>

* procfs.c (_stp_register_procfs): Use /proc/MODULE rather than
/proc/systemtap/MODULE.

runtime/stpd/ChangeLog
runtime/stpd/librelay.c
runtime/transport/ChangeLog
runtime/transport/procfs.c

index 858f4e66c8224eabb98640a48ee255c1dc234557..7b60957e8d5eab5afef0b5beb2f6767b3f2ec457 100644 (file)
@@ -1,3 +1,8 @@
+2007-03-12  Frank Ch. Eigler  <fche@elastic.org>
+
+       * librelay.c (init_stp): Use /proc/MODULE rather than
+       /proc/systemtap/MODULE.
+
 2006-12-11  Martin Hunt  <hunt@redhat.com>
 
        * symbols.c (get_sections): Set buffer sizes to large enough
index 04ea7285ecf2e3df00fc62bd9508c89c46d8ab75..6acbe7f81acafc6032f438e8ab2a940ec30b56c7 100644 (file)
@@ -516,8 +516,9 @@ int init_stp(int print_summary)
                fprintf(stderr, "ERROR, couldn't insmod probe module %s\n", modpath);
                return -1;
        }
-       
-       sprintf (proc_filebase, "/proc/systemtap/%s", modname);
+
+        /* We no longer use /proc/systemtap/, just /proc.  */
+       sprintf (proc_filebase, "/proc/%s", modname);
        char *ptr = index(proc_filebase,'.');
        if (ptr)
                *ptr = 0;
index ff092a9393a44a6b4441780ae82bfa1b7089c23b..54bde5d2c7fc06fbbb73534deffb44a3c14cd589 100644 (file)
@@ -1,3 +1,8 @@
+2007-03-12  Frank Ch. Eigler  <fche@elastic.org>
+
+       * procfs.c (_stp_register_procfs): Use /proc/MODULE rather than
+       /proc/systemtap/MODULE.
+
 2007-03-12  Frank Ch. Eigler  <fche@redhat.com>
 
        PR 4179.
index ca243035717c34f179d4efbc26412cbbf4e0d80f..64538ae6a369303a28e91a6b361bea55a915c636 100644 (file)
@@ -302,7 +302,6 @@ err:
 static int _stp_register_procfs (void)
 {
        int i;
-       const char *dirname = "systemtap";
 #ifdef STP_RELAYFS     
        int j;
        char buf[8];
@@ -322,22 +321,13 @@ static int _stp_register_procfs (void)
                _stp_allocated_net_memory += sizeof(struct _stp_buffer);
                list_add (p, &_stp_pool_q);
        }
-       
 
-       /* look for existing /proc/systemtap */
-       for (de = proc_root.subdir; de; de = de->next) {
-               if (my_proc_match (strlen (dirname), dirname, de)) {
-                       _stp_proc_root = de;
-                       break;
-               }
-       }
-
-       /* create /proc/systemtap if it doesn't exist */
-       if (_stp_proc_root == NULL) {
-               _stp_proc_root = proc_mkdir (dirname, NULL);
-               if (_stp_proc_root == NULL)
-                       goto err0;
-       }
+        /* Formerly, we allocated /proc/systemtap, but unfortunately
+           that's racy with multiple concurrent probes.  So now we set
+           _stp_proc_root to proc_root.  This way, /proc/stap_XXXX
+           rather than /proc/systemtap/stap_XXXX will be the directory
+           under which cmd/ etc. will show up.  */
+        _stp_proc_root = NULL;
 
        /* now create /proc/systemtap/module_name */
        _stp_proc_mod = proc_mkdir (THIS_MODULE->name, _stp_proc_root);
@@ -380,7 +370,7 @@ err1:
                
        }
 #endif
-       remove_proc_entry (THIS_MODULE->name, _stp_proc_root);
+        remove_proc_entry (THIS_MODULE->name, _stp_proc_root);
 err0:
        list_for_each_safe(p, tmp, &_stp_pool_q) {
                list_del(p);
@@ -409,7 +399,7 @@ static void _stp_unregister_procfs (void)
        }
 #endif
        remove_proc_entry ("cmd", _stp_proc_mod);
-       remove_proc_entry (THIS_MODULE->name, _stp_proc_root); /* XXX: race condition */
+       remove_proc_entry (THIS_MODULE->name, _stp_proc_root);
 
        /* free memory pools */
        list_for_each_safe(p, tmp, &_stp_pool_q) {
This page took 0.033539 seconds and 5 git commands to generate.