X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fust-app.h;fp=ltt-sessiond%2Fust-app.h;h=91be503204c1c6b9e421cd5c90011a874f6234c0;hp=cc08a4c338b1da77f7f619d1af3ba0b822d5d08a;hb=f6a9efaa0fe496b7fa4850daa2eae98a240433e1;hpb=9674ce7a9c5218066b395d1f6d1f19f277849f95 diff --git a/ltt-sessiond/ust-app.h b/ltt-sessiond/ust-app.h index cc08a4c33..91be50320 100644 --- a/ltt-sessiond/ust-app.h +++ b/ltt-sessiond/ust-app.h @@ -16,8 +16,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef _TRACEABLE_APP_H -#define _TRACEABLE_APP_H +#ifndef _LTT_UST_APP_H +#define _LTT_UST_APP_H #include #include @@ -37,56 +37,44 @@ struct ust_register_msg { char name[16]; }; -/* - * Traceable application list. - */ -struct ust_app_list { - /* - * This lock protects any read/write access to the list and count (which is - * basically the list size). All public functions in traceable-app.c - * acquire this lock and release it before returning. If none of those - * functions are used, the lock MUST be acquired in order to iterate or/and - * do any actions on that list. - */ - pthread_mutex_t lock; - - /* - * Number of element in the list. The session list lock MUST be acquired if - * this counter is used when iterating over the session list. - */ - unsigned int count; - - /* Linked list head */ - struct cds_list_head head; +struct cds_lfht *ust_app_ht; + +struct cds_lfht *ust_app_sock_key_map; + +struct ust_app_key { + pid_t pid; + int sock; + struct cds_lfht_node node; }; -/* Registered traceable applications. Libust registers to the session daemon +/* + * Registered traceable applications. Libust registers to the session daemon * and a linked list is kept of all running traceable app. */ struct ust_app { - int sock; /* Communication socket with the application */ - pid_t pid; + //int sock; + //pid_t pid; pid_t ppid; uid_t uid; /* User ID that owns the apps */ gid_t gid; /* Group ID that owns the apps */ uint32_t v_major; /* Verion major number */ uint32_t v_minor; /* Verion minor number */ char name[17]; /* Process name (short) */ - struct ltt_ust_channel_list channels; - struct cds_list_head list; + struct cds_lfht *channels; + struct cds_lfht_node node; + struct ust_app_key key; }; #ifdef CONFIG_LTTNG_TOOLS_HAVE_UST int ust_app_register(struct ust_register_msg *msg, int sock); void ust_app_unregister(int sock); -unsigned int ust_app_list_count(void); +unsigned long ust_app_list_count(void); -void ust_app_lock_list(void); -void ust_app_unlock_list(void); void ust_app_clean_list(void); -struct ust_app_list *ust_app_get_list(void); -struct ust_app *ust_app_get_by_pid(pid_t pid); +void ust_app_ht_alloc(void); +struct cds_lfht *ust_app_get_ht(void); +struct ust_app *ust_app_find_by_pid(pid_t pid); #else @@ -128,8 +116,6 @@ struct ust_app *ust_app_get_by_pid(pid_t pid) return NULL; } - - #endif -#endif /* _TRACEABLE_APP_H */ +#endif /* _LTT_UST_APP_H */