flist_for_each(entry, &client_hash[bucket]) {
client = flist_entry(entry, struct fio_client, hash_list);
- if (client->fd == fd) {
- client->refs++;
- return client;
- }
+ if (client->fd == fd)
+ return fio_get_client(client);
}
return NULL;
sum_stat_clients--;
}
-static void put_client(struct fio_client *client)
+void fio_put_client(struct fio_client *client)
{
remove_client(client);
}
+struct fio_client *fio_get_client(struct fio_client *client)
+{
+ client->refs++;
+ return client;
+}
+
static void __fio_client_add_cmd_option(struct fio_client *client,
const char *opt)
{
retval = 1;
} else if (client->error)
retval = 1;
- put_client(client);
+ fio_put_client(client);
}
}
extern void fio_client_add_cmd_option(void *, const char *);
extern void fio_client_terminate(struct fio_client *);
extern void fio_clients_terminate(void);
+extern struct fio_client *fio_get_client(struct fio_client *);
+extern void fio_put_client(struct fio_client *);
#endif
gc = malloc(sizeof(*gc));
memset(gc, 0, sizeof(*gc));
gc->ge = ge;
- gc->client = client;
+ gc->client = fio_get_client(client);
ge->client = gc;
static void ge_destroy(GtkWidget *w, gpointer data)
{
struct gui_entry *ge = data;
+ struct gfio_client *gc = ge->client;
+
+ if (gc->client)
+ fio_put_client(gc->client);
flist_del(&ge->list);
free(ge);