Skip to content

Commit

Permalink
OS-1680 update node-dtrace provider to 3336f6ebd2fc73c6cfd4d09be3d80a…
Browse files Browse the repository at this point in the history
…5716aace8d (0.2.3)
  • Loading branch information
joshwilsdon committed Nov 1, 2012
1 parent 84c61f0 commit 6f7ff90
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 7 deletions.
9 changes: 9 additions & 0 deletions src/node-dtrace-provider/CHANGES.md
Expand Up @@ -3,6 +3,15 @@ dtrace-provider - Changes

## HISTORY

* 0.2.3:
libusdt update - don't invoke ranlib on SunOS-derived systems
Disambiguate module name in probe tuple, and optionally allow it to be
specified when creating a provider. (Bryan Cantrill bcantrill@acm.org)

* 0.2.2:
libusdt update for build fixes
Respect MAKE variable in build script

* 0.2.1:
Update binding.gyp for clang on Snow Leopard - no space after -L.

Expand Down
6 changes: 4 additions & 2 deletions src/node-dtrace-provider/dtrace-provider.js
Expand Up @@ -32,6 +32,8 @@ if (!DTraceProvider) {
}

exports.DTraceProvider = DTraceProvider;
exports.createDTraceProvider = function(name) {
return new DTraceProvider(name);
exports.createDTraceProvider = function(name, module) {
if (arguments.length == 2)
return (new DTraceProvider(name, module));
return (new DTraceProvider(name));
};
22 changes: 20 additions & 2 deletions src/node-dtrace-provider/dtrace_provider.cc
Expand Up @@ -32,17 +32,35 @@ namespace node {
Handle<Value> DTraceProvider::New(const Arguments& args) {
HandleScope scope;
DTraceProvider *p = new DTraceProvider();
char module[128];

p->Wrap(args.This());

if (args.Length() != 1 || !args[0]->IsString()) {
if (args.Length() < 1 || !args[0]->IsString()) {
return ThrowException(Exception::Error(String::New(
"Must give provider name as argument")));
}

String::AsciiValue name(args[0]->ToString());

if ((p->provider = usdt_create_provider(*name, "modname")) == NULL) {
if (args.Length() == 2) {
if (!args[1]->IsString()) {
return ThrowException(Exception::Error(String::New(
"Must give module name as argument")));
}

String::AsciiValue mod(args[1]->ToString());
(void) snprintf(module, sizeof (module), "%s", *mod);
} else if (args.Length() == 1) {
// If no module name is provided, develop a synthetic module name based
// on our address
(void) snprintf(module, sizeof (module), "mod-%p", p);
} else {
return ThrowException(Exception::Error(String::New(
"Expected only provider name and module as arguments")));
}

if ((p->provider = usdt_create_provider(*name, module)) == NULL) {
return ThrowException(Exception::Error(String::New(
"usdt_create_provider failed")));
}
Expand Down
2 changes: 1 addition & 1 deletion src/node-dtrace-provider/libusdt/Makefile
Expand Up @@ -14,7 +14,7 @@ endif
UNAME = $(shell uname -s)

ifeq ($(UNAME), SunOS)
RANLIB=granlib
RANLIB=/bin/true
PATH +=:/usr/perl5/5.10.0/bin:/usr/perl5/5.12/bin
CFLAGS += -fPIC

Expand Down
2 changes: 1 addition & 1 deletion src/node-dtrace-provider/package.json
@@ -1,6 +1,6 @@
{
"name" : "dtrace-provider",
"version" : "0.2.2",
"version" : "0.2.3",
"description" : "Native DTrace providers for node.js applications",
"keywords" : ["dtrace"],
"homepage" : "https://github.com/chrisa/node-dtrace-provider#readme",
Expand Down
28 changes: 28 additions & 0 deletions src/node-dtrace-provider/test/disambiguation.js
@@ -0,0 +1,28 @@
// expected output:
//
// $ NODE_PATH=. sudo -E dtrace -Zn 'test*:::{trace(probemod)}' -c 'node test/disambiguation.js'
// dtrace: description 'test*:::' matched 0 probes
// dtrace: pid 73913 has exited
// CPU ID FUNCTION:NAME
// 0 33495 probe1:probe1 mod-0x100a11440
// 0 33498 probe1:probe1 mod-0x100e00160

var d = require('dtrace-provider');

var dtp = d.createDTraceProvider('test');
var p1 = dtp.addProbe('probe1', 'int', 'int');
var p2 = dtp.addProbe('probe2', 'int', 'int');
dtp.enable();

var dtp2 = d.createDTraceProvider('test');
var p1 = dtp2.addProbe('probe3', 'int', 'int');
var p2 = dtp2.addProbe('probe1', 'int', 'int');
dtp2.enable();

dtp.fire('probe1', function () {
return ([12, 3]);
});

dtp2.fire('probe1', function () {
return ([12, 73]);
});
28 changes: 28 additions & 0 deletions src/node-dtrace-provider/test/disambiguation2.js
@@ -0,0 +1,28 @@
// expected output:
//
// $ NODE_PATH=. sudo -E dtrace -Zn 'test*:::{trace(probemod)}' -c 'node test/disambiguation2.js'
// dtrace: description 'test*:::' matched 0 probes
// dtrace: pid 73913 has exited
// CPU ID FUNCTION:NAME
// 0 33495 probe1:probe1 mymod1
// 0 33498 probe1:probe1 mymod2

var d = require('dtrace-provider');

var dtp = d.createDTraceProvider('test', 'mymod1');
var p1 = dtp.addProbe('probe1', 'int', 'int');
var p2 = dtp.addProbe('probe2', 'int', 'int');
dtp.enable();

var dtp2 = d.createDTraceProvider('test', 'mymod2');
var p1 = dtp2.addProbe('probe3', 'int', 'int');
var p2 = dtp2.addProbe('probe1', 'int', 'int');
dtp2.enable();

dtp.fire('probe1', function () {
return ([12, 3]);
});

dtp2.fire('probe1', function () {
return ([12, 73]);
});
2 changes: 1 addition & 1 deletion src/node-dtrace-provider/wscript
Expand Up @@ -4,7 +4,7 @@ from os.path import exists, islink

srcdir = '.'
blddir = 'build'
VERSION = '0.2.2'
VERSION = '0.2.3'

libusdtdir = 'libusdt'

Expand Down

0 comments on commit 6f7ff90

Please sign in to comment.