1 /*
 2  * Copyright (c) 2001, 2021, Oracle and/or its affiliates. All rights reserved.
 3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 4  *
 5  * This code is free software; you can redistribute it and/or modify it
 6  * under the terms of the GNU General Public License version 2 only, as
 7  * published by the Free Software Foundation.  Oracle designates this
 8  * particular file as subject to the "Classpath" exception as provided
 9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 #ifndef JDWP_EVENTFILTER_H
27 #define JDWP_EVENTFILTER_H
28 
29 #include "eventHandler.h"
30 
31 /***** filter set-up *****/
32 
33 jvmtiError eventFilter_setConditionalFilter(HandlerNode *node,
34                                       jint index, jint exprID);
35 jvmtiError eventFilter_setCountFilter(HandlerNode *node,
36                                 jint index, jint count);
37 jvmtiError eventFilter_setThreadOnlyFilter(HandlerNode *node,
38                                      jint index, jthread thread);
39 jvmtiError eventFilter_setLocationOnlyFilter(HandlerNode *node,
40                                        jint index,
41                                        jclass clazz,
42                                        jmethodID method,
43                                        jlocation location);
44 jvmtiError eventFilter_setFieldOnlyFilter(HandlerNode *node,
45                                     jint index,
46                                     jclass clazz,
47                                     jfieldID field);
48 jvmtiError eventFilter_setClassOnlyFilter(HandlerNode *node,
49                                     jint index,
50                                     jclass clazz);
51 jvmtiError eventFilter_setExceptionOnlyFilter(HandlerNode *node,
52                                         jint index,
53                                         jclass exceptionClass,
54                                         jboolean caught,
55                                         jboolean uncaught);
56 jvmtiError eventFilter_setInstanceOnlyFilter(HandlerNode *node,
57                                        jint index,
58                                        jobject object);
59 jvmtiError eventFilter_setClassMatchFilter(HandlerNode *node,
60                                      jint index,
61                                      char *classPattern);
62 jvmtiError eventFilter_setClassExcludeFilter(HandlerNode *node,
63                                        jint index,
64                                        char *classPattern);
65 jvmtiError eventFilter_setStepFilter(HandlerNode *node,
66                                jint index,
67                                jthread thread,
68                                jint size, jint depth);
69 jvmtiError eventFilter_setSourceNameMatchFilter(HandlerNode *node,
70                                                 jint index,
71                                                 char *sourceNamePattern);
72 jvmtiError eventFilter_setPlatformThreadsOnlyFilter(HandlerNode *node, jint index);
73 
74 /***** misc *****/
75 
76 jboolean eventFilter_predictFiltering(HandlerNode *node, jclass clazz, char *classname);
77 jboolean isBreakpointSet(jclass clazz, jmethodID method, jlocation location);
78 
79 /***** debugging *****/
80 
81 #ifdef DEBUG
82 void eventFilter_dumpHandlerFilters(HandlerNode *node);
83 #endif
84 
85 #endif /* _EVENT_FILTER_H */