summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorguanglei <guanglei>2006-11-21 08:14:27 +0000
committerguanglei <guanglei>2006-11-21 08:14:27 +0000
commit5d4d52aa800cf717d57377ce1e6356cde0116c5b (patch)
treee311e47a1ed192832f3e1114b0733058f7d7015a /runtime
parent85ecf79a90e57a11f747d0c37470122f622ff671 (diff)
downloadsystemtap-steved-5d4d52aa800cf717d57377ce1e6356cde0116c5b.tar.gz
systemtap-steved-5d4d52aa800cf717d57377ce1e6356cde0116c5b.tar.xz
systemtap-steved-5d4d52aa800cf717d57377ce1e6356cde0116c5b.zip
add LKET testcase into testsuite/systemtap.samples/
change the return codes of lket-b2a and add a new macro b2a_error() for error reporting
Diffstat (limited to 'runtime')
-rw-r--r--runtime/ChangeLog5
-rw-r--r--runtime/lket/b2a/lket_b2a.c85
2 files changed, 42 insertions, 48 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index 3929e46f..00302772 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,8 @@
+2006-11-21 Li Guanglei <guanglei@cn.ibm.com>
+ * runtime/lket/b2a/lket_b2a.[ch]: add b2a_error() and change
+ the error return codes.
+
+
2006-11-19 Li Guanglei <guanglei@cn.ibm.com>
* runtime/lket/b2a/lket_b2a.[ch]: bugfix for #3536
diff --git a/runtime/lket/b2a/lket_b2a.c b/runtime/lket/b2a/lket_b2a.c
index aaa1737c..e7c2dae4 100644
--- a/runtime/lket/b2a/lket_b2a.c
+++ b/runtime/lket/b2a/lket_b2a.c
@@ -63,6 +63,9 @@ GTree *appNameTree;
/* event table */
event_desc *events_des[MAX_EVT_TYPES][MAX_GRPID][MAX_HOOKID];
+#define b2a_error(fmt, args...) do { fprintf(stderr, "Error %d@%s: "fmt, __LINE__, __func__, ## args);\
+ exit(-1); } while(0)
+
void usage()
{
printf("Usage:\n\
@@ -147,8 +150,7 @@ int main(int argc, char *argv[])
#ifndef HAS_MYSQL
if(into_db) {
- fprintf(stderr, "-m option is not supported since lket-b2a is not compiled with mysql support, \n");
- exit(-1);
+ b2a_error("-m option is not supported since lket-b2a is not compiled with mysql support\n");
}
#endif
if(into_file==0 && into_db==0) {
@@ -166,8 +168,7 @@ int main(int argc, char *argv[])
// open the input files and the output file
infps = (FILE **)malloc(total_infiles * sizeof(FILE *));
if(!infps) {
- printf("Unable to malloc infps\n");
- exit(-1);
+ b2a_error("Unable to malloc infps\n");
}
memset(infps, 0, total_infiles * sizeof(FILE *));
@@ -197,31 +198,27 @@ int main(int argc, char *argv[])
#ifdef HAS_MYSQL
if(into_db) {
if(!mysql_init(&mysql)) {
- fprintf(stderr, "Failed to Init MySQL: Error: %s\n",
+ b2a_error("Failed to Init MySQL: Error: %s\n",
mysql_error(&mysql));
- exit(-1);
}
if(!mysql_real_connect(&mysql, NULL, NULL, NULL, NULL, 0, NULL,
CLIENT_MULTI_STATEMENTS)) {
- fprintf(stderr, "Failed to connect to database: Error: %s\n",
+ b2a_error("Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
- exit(-1);
}
snprintf(sql, 64,"create database %s", database);
if(mysql_query(&mysql, sql)) {
- fprintf(stderr, "Failed create database %s, Error: %s\n",
+ b2a_error("Failed create database %s, Error: %s\n",
database, mysql_error(&mysql));
- exit(-1);
}
if(!mysql_real_connect(&mysql, NULL, NULL, NULL, database, 0, NULL,
CLIENT_MULTI_STATEMENTS)) {
- fprintf(stderr, "Failed to connect to database %s: Error: %s\n",
+ b2a_error("Failed to connect to database %s: Error: %s\n",
database, mysql_error(&mysql));
- exit(-1);
}
}
#endif
@@ -337,15 +334,13 @@ failed:
if(events_des[_HOOKID_REGSYSEVT][i][j]->flag == 0 && into_db) {
snprintf(sql, 256, "drop table %d_%d",i,j);
if(mysql_query(&mysql,sql)) {
- fprintf(stderr, "Failed to exec sql: %s, Error: %s\n",
+ b2a_error("Failed to exec sql: %s, Error: %s\n",
sql, mysql_error(&mysql));
- exit(-1);
}
snprintf(sql, 256, "delete from table_desc where table_name='%d_%d'",i,j);
if(mysql_query(&mysql,sql)) {
- fprintf(stderr, "Failed to exec sql: %s, Error: %s\n",
+ b2a_error("Failed to exec sql: %s, Error: %s\n",
sql, mysql_error(&mysql));
- exit(-1);
}
}
/* destroy entrytime tree */
@@ -385,9 +380,8 @@ void register_appname(int i, FILE *fp, lket_pkt_header *phdr)
if(into_db) {
if(flag==0) {
if(mysql_query(&mysql, "create table appNameMap ( pid INT, pname varchar(20))")) {
- fprintf(stderr, "Failed to create appNameMap table, Error: %s\n",
+ b2a_error("Failed to create appNameMap table, Error: %s\n",
mysql_error(&mysql));
- exit(-1);
}
}
flag=1;
@@ -436,9 +430,8 @@ void register_appname(int i, FILE *fp, lket_pkt_header *phdr)
if(into_db) {
snprintf(sql, 256,"insert into appNameMap values ( %d, \"%s\")", pid, appname);
if(mysql_query(&mysql,sql)) {
- fprintf(stderr, "Failed to exec SQL: %s, Error: %s\n",
+ b2a_error("Failed to exec SQL: %s, Error: %s\n",
sql, mysql_error(&mysql));
- exit(-1);
}
}
#endif
@@ -478,7 +471,7 @@ void find_init_header(FILE **infps, const int total_infiles)
char timing_methods_str[128];
if(total_infiles <= 0 )
- exit(-1);
+ b2a_error("total_infiles <= 0\n");
j = total_infiles;
for(i=0; i<total_infiles; i++) {
if(fread(&magic, 1, sizeof(magic), infps[i]) < sizeof(magic))
@@ -556,17 +549,15 @@ void find_init_header(FILE **infps, const int total_infiles)
#ifdef HAS_MYSQL
if(into_db) {
if(mysql_query(&mysql, "create table trace_header ( Major_Ver TINYINT, Minor_Ver TINYINT, Big_Endian TINYINT, Timing_Method varchar(20), Bits_Width TINYINT)" )) {
- fprintf(stderr, "Failed to create trace_header table, Error: %s\n",
+ b2a_error("Failed to create trace_header table, Error: %s\n",
mysql_error(&mysql));
- exit(-1);
}
snprintf(sql, 256, "insert into trace_header value ( %d, %d, %d, \"%s\", %d )",
ver_major, ver_minor, big_endian, timing_methods_str, bits_width);
if(mysql_query(&mysql, sql)) {
- fprintf(stderr, "Failed exec SQL %d: \n %s \n, Error: %s\n",
+ b2a_error("Failed exec SQL %d: \n %s \n, Error: %s\n",
__LINE__, sql, mysql_error(&mysql));
- exit(-1);
}
}
#endif
@@ -580,15 +571,19 @@ void find_init_header(FILE **infps, const int total_infiles)
*/
int get_pkt_header(FILE *fp, lket_pkt_header *phdr)
{
- if(fread(phdr, 1, sizeof(lket_pkt_header), fp) < sizeof(lket_pkt_header))
- goto bad;
+ size_t size;
+ if(feof(fp)) return 0;
+ if((size = fread(phdr, 1, sizeof(lket_pkt_header), fp)) < sizeof(lket_pkt_header)) {
+ if(feof(fp)) {
+ bzero(phdr, sizeof(lket_pkt_header));
+ return 0;
+ } else
+ b2a_error("fread read %d bytes than expected %d, feof:%d\n", size, sizeof(lket_pkt_header), feof(fp));
+ }
phdr->sys_size -= sizeof(lket_pkt_header)-sizeof(phdr->total_size)-sizeof(phdr->sys_size);
phdr->total_size -= sizeof(lket_pkt_header)-sizeof(phdr->total_size)-sizeof(phdr->sys_size);
return 0;
-bad:
- memset(phdr, 0, sizeof(lket_pkt_header));
- exit(-1);
}
void print_pkt_header(lket_pkt_header *phdr)
@@ -598,7 +593,7 @@ void print_pkt_header(lket_pkt_header *phdr)
int grpid, hookid, pid, tid, ppid;
if(!phdr)
- exit(-1);
+ b2a_error("phdr is NULL\n");
if(timing_method == TIMING_GETCYCLES)
usecs = (phdr->microsecond - cpufreq[HDR_CpuID(phdr)].last_cycles)
@@ -702,9 +697,8 @@ void register_evt_desc(FILE *infp, size_t size)
if(!has_table) {
snprintf(sql, 1024, "create table table_desc ( table_name varchar(6), table_desc varchar(32))");
if(mysql_query(&mysql, sql)) {
- fprintf(stderr, "Failed exec SQL %d: \n %s \n, Error: %s\n",
- __LINE__, sql, mysql_error(&mysql));
- exit(-1);
+ b2a_error("Failed exec SQL: \n %s \n, Error: %s\n",
+ sql, mysql_error(&mysql));
}
has_table = 1;
}
@@ -713,9 +707,8 @@ void register_evt_desc(FILE *infp, size_t size)
evt_body+2);
if(mysql_query(&mysql, sql)) {
- fprintf(stderr, "Failed exec SQL:%d \n %s \n, Error: %s\n",
- __LINE__, sql, mysql_error(&mysql));
- exit(-1);
+ b2a_error("Failed exec SQL:\n %s \n, Error: %s\n",
+ sql, mysql_error(&mysql));
}
}
#endif
@@ -739,9 +732,8 @@ void register_events(int evt_type, FILE *infp, size_t size)
if(!events_des[evt_type][grpid][hookid])
events_des[evt_type][grpid][hookid] = malloc(sizeof(event_desc));
if(!events_des[evt_type][grpid][hookid]) {
- fprintf(stderr, "error when malloc for event_des[%d][%d][%d]\n",
+ b2a_error("error when malloc for event_des[%d][%d][%d]\n",
evt_type, grpid, hookid);
- exit(-1);
}
#ifdef HAS_MYSQL
@@ -773,8 +765,7 @@ void register_events(int evt_type, FILE *infp, size_t size)
name = strsep(&evt_names, ":");
if(fmt==NULL || name==NULL) {
- printf("error in event format/names string\n");
- exit(-1);
+ b2a_error("error in event format/names string\n");
}
while(fmt!=NULL && name!=NULL) {
@@ -818,9 +809,8 @@ gen_sql:
sql[strlen(sql)-1]='\0';
if(mysql_query(&mysql, sql)) {
- fprintf(stderr, "Failed exec SQL %d: \n %s \n, Error: %s\n",
- __LINE__, sql, mysql_error(&mysql));
- exit(-1);
+ b2a_error("Failed exec SQL: \n %s \n, Error: %s\n",
+ sql, mysql_error(&mysql));
}
}
#endif
@@ -977,7 +967,7 @@ int dump_data(lket_pkt_header header, FILE *infp)
continue;
}
else {
- exit(-1);
+ b2a_error("error processing STRING\n");
}
}
}
@@ -993,9 +983,8 @@ int dump_data(lket_pkt_header header, FILE *infp)
if(sql_count >= INSERT_THRESHOLD) {
if(mysql_query(&mysql, sqlStatement)) {
- fprintf(stderr, "Failed exec SQL %d:\n%s\n, Error:\n%s\n",
- __LINE__, sqlStatement, mysql_error(&mysql));
- exit(-1);
+ b2a_error("Failed exec SQL:\n%s\n, Error:\n%s\n",
+ sqlStatement, mysql_error(&mysql));
}
while(!mysql_next_result(&mysql));
sql_count=0;