/* Try to find the errno number using the errno(1) program */
static int errno_by_name_dynamic(const char *errno_name)
{
- int len = strlen(errno_name);
+ int i, len = strlen(errno_name);
int err, number = -1;
char buf[128];
char cmd[64];
FILE *f;
/* sanity check to not call popen with random input */
- for (int i = 0; i < len; i++) {
+ for (i = 0; i < len; i++) {
if (errno_name[i] < 'A' || errno_name[i] > 'Z') {
warn("errno_name contains invalid char 0x%02x: %s\n",
errno_name[i], errno_name);
const char **args = (const char **)(ctx->args[1]);
const char *argp;
uid_t uid = (u32)bpf_get_current_uid_gid();
+ int i;
if (valid_uid(targ_uid) && targ_uid != uid)
return 0;
event->args_count++;
#pragma unroll
- for (int i = 1; i < TOTAL_MAX_ARGS && i < max_args; i++) {
+ for (i = 1; i < TOTAL_MAX_ARGS && i < max_args; i++) {
bpf_probe_read_user(&argp, sizeof(argp), &args[i]);
if (!argp)
return 0;
static void print_args(const struct event *e, bool quote)
{
- int args_counter = 0;
+ int i, args_counter = 0;
if (env.quote)
putchar('"');
- for (int i = 0; i < e->args_size && args_counter < e->args_count; i++) {
+ for (i = 0; i < e->args_size && args_counter < e->args_count; i++) {
char c = e->args[i];
+
if (env.quote) {
if (c == '\0') {
args_counter++;
.doc = program_doc,
};
struct funclatency_bpf *obj;
- int err;
+ int i, err;
struct tm *tm;
char ts[32];
time_t t;
printf("Tracing %s. Hit Ctrl-C to exit\n", env.funcname);
- for (int i = 0; i < env.iterations && !exiting; i++) {
+ for (i = 0; i < env.iterations && !exiting; i++) {
sleep(env.interval);
printf("\n");
{
__u8 key[key_size], next_key[key_size];
__u32 n = 0;
- int err;
+ int i, err;
/* First get keys */
__builtin_memcpy(key, invalid_key, key_size);
}
/* Now read values */
- for (int i = 0; i < n; i++) {
+ for (i = 0; i < n; i++) {
err = bpf_map_lookup_elem(map_fd, keys + key_size * i,
values + value_size * i);
if (err)
void free_syscall_names(void)
{
- for (size_t i = 0; i < syscall_names_size; i++)
+ size_t i;
+
+ for (i = 0; i < syscall_names_size; i++)
free((void *) syscall_names[i]);
free(syscall_names);
}
int list_syscalls(void)
{
const char **list = syscall_names;
- size_t size = syscall_names_size;
+ size_t i, size = syscall_names_size;
#ifdef __x86_64__
if (!size) {
}
#endif
- for (size_t i = 0; i < size; i++) {
+ for (i = 0; i < size; i++) {
if (list[i])
printf("%3zd: %s\n", i, list[i]);
}
{
double div = env.milliseconds ? 1000000.0 : 1000.0;
char buf[2 * TASK_COMM_LEN];
+ int i;
print_latency_header();
- for (int i = 0; i < count && i < env.top; i++)
+ for (i = 0; i < count && i < env.top; i++)
printf("%-22s %8llu %16.3lf\n",
agg_col(&vals[i], buf, sizeof(buf)),
vals[i].count, vals[i].total_ns / div);
static void print_count(struct data_ext_t *vals, size_t count)
{
char buf[2 * TASK_COMM_LEN];
+ int i;
print_count_header();
- for (int i = 0; i < count && i < env.top; i++)
+ for (i = 0; i < count && i < env.top; i++)
printf("%-22s %8llu\n",
agg_col(&vals[i], buf, sizeof(buf)), vals[i].count);
printf("\n");
{
struct data_t orig_vals[*count];
void *in = NULL, *out;
- __u32 n, n_read = 0;
+ __u32 i, n, n_read = 0;
__u32 keys[*count];
int err = 0;
in = out;
}
- for (__u32 i = 0; i < n_read; i++) {
+ for (i = 0; i < n_read; i++) {
vals[i].count = orig_vals[i].count;
vals[i].total_ns = orig_vals[i].total_ns;
vals[i].key = keys[i];
struct data_t val;
__u32 key = -1;
__u32 next_key;
- int i = 0;
+ int i = 0, j;
int err;
if (batch_map_ops) {
key = keys[i++] = next_key;
}
- for (int j = 0; j < i; j++) {
+ for (j = 0; j < i; j++) {
err = bpf_map_lookup_elem(fd, &keys[j], &val);
if (err && errno != ENOENT) {
warn("failed to lookup element: %s\n", strerror(errno));
* will be fixed in future by using bpf_map_lookup_and_delete_batch,
* but this function is too fresh to use it in bcc. */
- for (int j = 0; j < i; j++) {
+ for (j = 0; j < i; j++) {
err = bpf_map_delete_elem(fd, &keys[j]);
if (err) {
warn("failed to delete element: %s\n", strerror(errno));
static __always_inline bool filter_port(__u16 port)
{
+ int i;
+
if (filter_ports_len == 0)
return false;
- for (int i = 0; i < filter_ports_len; i++) {
+ for (i = 0; i < filter_ports_len; i++) {
if (port == filter_ports[i])
return false;
}
static __u64 counts[MAX_ENTRIES];
char s[INET_ADDRSTRLEN];
char d[INET_ADDRSTRLEN];
- __u32 n = MAX_ENTRIES;
+ __u32 i, n = MAX_ENTRIES;
struct in_addr src;
struct in_addr dst;
return;
}
- for (__u32 i = 0; i < n; i++) {
+ for (i = 0; i < n; i++) {
src.s_addr = keys[i].saddr;
dst.s_addr = keys[i].daddr;
static __u64 counts[MAX_ENTRIES];
char s[INET6_ADDRSTRLEN];
char d[INET6_ADDRSTRLEN];
- __u32 n = MAX_ENTRIES;
+ __u32 i, n = MAX_ENTRIES;
struct in6_addr src;
struct in6_addr dst;
return;
}
- for (__u32 i = 0; i < n; i++) {
+ for (i = 0; i < n; i++) {
memcpy(src.s6_addr, keys[i].saddr, sizeof(src.s6_addr));
memcpy(dst.s6_addr, keys[i].daddr, sizeof(src.s6_addr));
.args_doc = NULL,
};
struct tcpconnect_bpf *obj;
- int err;
+ int i, err;
err = argp_parse(&argp, argc, argv, 0, NULL, NULL);
if (err)
obj->rodata->filter_uid = env.uid;
if (env.nports > 0) {
obj->rodata->filter_ports_len = env.nports;
- for (int i = 0; i < env.nports; i++) {
+ for (i = 0; i < env.nports; i++) {
obj->rodata->filter_ports[i] = htons(env.ports[i]);
}
}
off_t get_elf_func_offset(const char *path, const char *func)
{
off_t ret = -1;
- int fd = -1;
+ int i, fd = -1;
Elf *e;
Elf_Scn *scn;
Elf_Data *data;
continue;
data = NULL;
while ((data = elf_getdata(scn, data))) {
- for (int i = 0; gelf_getsym(data, i, sym); i++) {
+ for (i = 0; gelf_getsym(data, i, sym); i++) {
n = elf_strptr(e, shdr->sh_link, sym->st_name);
if (!n)
continue;
static void print_header(void)
{
+ int i;
+
printf("%-8s ", "TIME");
- for (int i = 0; i < S_MAXSTAT; i++)
+ for (i = 0; i < S_MAXSTAT; i++)
printf(" %6s/s", stat_types_names[i]);
printf("\n");
}
{
char s[16];
__u64 val;
+ int i;
printf("%-8s: ", strftime_now(s, sizeof(s), "%H:%M:%S"));
- for (int i = 0; i < S_MAXSTAT; i++) {
+ for (i = 0; i < S_MAXSTAT; i++) {
val = __atomic_exchange_n(&stats[i], 0, __ATOMIC_RELAXED);
printf(" %8llu", val / env.interval);
}