Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2f7bf13 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds
Browse files

[PATCH] getdelays: various fixes



- Various cleanups

- Report errors to stderr, not stdout

- A printf was missing a \n and was hiding from me.

Cc: Jay Lan <jlan@sgi.com>
Cc: Shailabh Nagar <nagar@watson.ibm.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Chris Sturtivant <csturtiv@sgi.com>
Cc: Tony Ernst <tee@sgi.com>
Cc: Guillaume Thouvenin <guillaume.thouvenin@bull.net>
Cc: David Wright <daw@sgi.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 4a7864ca
Loading
Loading
Loading
Loading
+29 −15
Original line number Original line Diff line number Diff line
@@ -7,6 +7,8 @@
 * Copyright (C) Balbir Singh, IBM Corp. 2006
 * Copyright (C) Balbir Singh, IBM Corp. 2006
 * Copyright (c) Jay Lan, SGI. 2006
 * Copyright (c) Jay Lan, SGI. 2006
 *
 *
 * Compile with
 *	gcc -I/usr/src/linux/include getdelays.c -o getdelays
 */
 */


#include <stdio.h>
#include <stdio.h>
@@ -35,13 +37,19 @@
#define NLA_DATA(na)		((void *)((char*)(na) + NLA_HDRLEN))
#define NLA_DATA(na)		((void *)((char*)(na) + NLA_HDRLEN))
#define NLA_PAYLOAD(len)	(len - NLA_HDRLEN)
#define NLA_PAYLOAD(len)	(len - NLA_HDRLEN)


#define err(code, fmt, arg...) do { printf(fmt, ##arg); exit(code); } while (0)
#define err(code, fmt, arg...)			\
int done = 0;
	do {					\
int rcvbufsz=0;
		fprintf(stderr, fmt, ##arg);	\
		exit(code);			\
	} while (0)


int done;
int rcvbufsz;
char name[100];
char name[100];
int dbg=0, print_delays=0;
int dbg;
int print_delays;
__u64 stime, utime;
__u64 stime, utime;

#define PRINTF(fmt, arg...) {			\
#define PRINTF(fmt, arg...) {			\
	    if (dbg) {				\
	    if (dbg) {				\
		printf(fmt, ##arg);		\
		printf(fmt, ##arg);		\
@@ -78,7 +86,8 @@ static int create_nl_socket(int protocol)
	if (rcvbufsz)
	if (rcvbufsz)
		if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF,
		if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF,
				&rcvbufsz, sizeof(rcvbufsz)) < 0) {
				&rcvbufsz, sizeof(rcvbufsz)) < 0) {
			printf("Unable to set socket rcv buf size to %d\n",
			fprintf(stderr, "Unable to set socket rcv buf size "
					"to %d\n",
				rcvbufsz);
				rcvbufsz);
			return -1;
			return -1;
		}
		}
@@ -277,7 +286,7 @@ int main(int argc, char *argv[])
	mypid = getpid();
	mypid = getpid();
	id = get_family_id(nl_sd);
	id = get_family_id(nl_sd);
	if (!id) {
	if (!id) {
		printf("Error getting family id, errno %d", errno);
		fprintf(stderr, "Error getting family id, errno %d\n", errno);
		goto err;
		goto err;
	}
	}
	PRINTF("family id %d\n", id);
	PRINTF("family id %d\n", id);
@@ -288,7 +297,7 @@ int main(int argc, char *argv[])
			      &cpumask, strlen(cpumask) + 1);
			      &cpumask, strlen(cpumask) + 1);
		PRINTF("Sent register cpumask, retval %d\n", rc);
		PRINTF("Sent register cpumask, retval %d\n", rc);
		if (rc < 0) {
		if (rc < 0) {
			printf("error sending register cpumask\n");
			fprintf(stderr, "error sending register cpumask\n");
			goto err;
			goto err;
		}
		}
	}
	}
@@ -298,7 +307,7 @@ int main(int argc, char *argv[])
			      cmd_type, &tid, sizeof(__u32));
			      cmd_type, &tid, sizeof(__u32));
		PRINTF("Sent pid/tgid, retval %d\n", rc);
		PRINTF("Sent pid/tgid, retval %d\n", rc);
		if (rc < 0) {
		if (rc < 0) {
			printf("error sending tid/tgid cmd\n");
			fprintf(stderr, "error sending tid/tgid cmd\n");
			goto done;
			goto done;
		}
		}
	}
	}
@@ -310,13 +319,15 @@ int main(int argc, char *argv[])
		PRINTF("received %d bytes\n", rep_len);
		PRINTF("received %d bytes\n", rep_len);


		if (rep_len < 0) {
		if (rep_len < 0) {
			printf("nonfatal reply error: errno %d\n", errno);
			fprintf(stderr, "nonfatal reply error: errno %d\n",
				errno);
			continue;
			continue;
		}
		}
		if (msg.n.nlmsg_type == NLMSG_ERROR ||
		if (msg.n.nlmsg_type == NLMSG_ERROR ||
		    !NLMSG_OK((&msg.n), rep_len)) {
		    !NLMSG_OK((&msg.n), rep_len)) {
			struct nlmsgerr *err = NLMSG_DATA(&msg);
			struct nlmsgerr *err = NLMSG_DATA(&msg);
			printf("fatal reply error,  errno %d\n", err->error);
			fprintf(stderr, "fatal reply error,  errno %d\n",
				err->error);
			goto done;
			goto done;
		}
		}


@@ -365,7 +376,9 @@ int main(int argc, char *argv[])
							goto done;
							goto done;
						break;
						break;
					default:
					default:
						printf("Unknown nested nla_type %d\n", na->nla_type);
						fprintf(stderr, "Unknown nested"
							" nla_type %d\n",
							na->nla_type);
						break;
						break;
					}
					}
					len2 += NLA_ALIGN(na->nla_len);
					len2 += NLA_ALIGN(na->nla_len);
@@ -374,7 +387,8 @@ int main(int argc, char *argv[])
				break;
				break;


			default:
			default:
				printf("Unknown nla_type %d\n", na->nla_type);
				fprintf(stderr, "Unknown nla_type %d\n",
					na->nla_type);
				break;
				break;
			}
			}
			na = (struct nlattr *) (GENLMSG_DATA(&msg) + len);
			na = (struct nlattr *) (GENLMSG_DATA(&msg) + len);