diff options
Diffstat (limited to 'gdb/common')
-rw-r--r-- | gdb/common/ptid.c | 14 | ||||
-rw-r--r-- | gdb/common/ptid.h | 10 |
2 files changed, 24 insertions, 0 deletions
diff --git a/gdb/common/ptid.c b/gdb/common/ptid.c index 49354ad..f614669 100644 --- a/gdb/common/ptid.c +++ b/gdb/common/ptid.c @@ -114,3 +114,17 @@ ptid_tid_p (ptid_t ptid) return (ptid_get_tid (ptid) != 0); } + +int +ptid_match (ptid_t ptid, ptid_t filter) +{ + if (ptid_equal (filter, minus_one_ptid)) + return 1; + if (ptid_is_pid (filter) + && ptid_get_pid (ptid) == ptid_get_pid (filter)) + return 1; + else if (ptid_equal (ptid, filter)) + return 1; + + return 0; +} diff --git a/gdb/common/ptid.h b/gdb/common/ptid.h index cc1825e..e151a14 100644 --- a/gdb/common/ptid.h +++ b/gdb/common/ptid.h @@ -83,4 +83,14 @@ int ptid_lwp_p (ptid_t ptid); /* Return true if PTID's tid member is non-zero. */ int ptid_tid_p (ptid_t ptid); +/* Returns true if PTID matches filter FILTER. FILTER can be the wild + card MINUS_ONE_PTID (all ptid match it); can be a ptid representing + a process (ptid_is_pid returns true), in which case, all lwps and + threads of that given process match, lwps and threads of other + processes do not; or, it can represent a specific thread, in which + case, only that thread will match true. PTID must represent a + specific LWP or THREAD, it can never be a wild card. */ + +extern int ptid_match (ptid_t ptid, ptid_t filter); + #endif |