xref: /aosp_15_r20/external/perfetto/src/android_internal/statsd.h (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker /*
2*6dbdd20aSAndroid Build Coastguard Worker  * Copyright (C) 2023 The Android Open Source Project
3*6dbdd20aSAndroid Build Coastguard Worker  *
4*6dbdd20aSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*6dbdd20aSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*6dbdd20aSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*6dbdd20aSAndroid Build Coastguard Worker  *
8*6dbdd20aSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*6dbdd20aSAndroid Build Coastguard Worker  *
10*6dbdd20aSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*6dbdd20aSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*6dbdd20aSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*6dbdd20aSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*6dbdd20aSAndroid Build Coastguard Worker  * limitations under the License.
15*6dbdd20aSAndroid Build Coastguard Worker  */
16*6dbdd20aSAndroid Build Coastguard Worker 
17*6dbdd20aSAndroid Build Coastguard Worker #ifndef SRC_ANDROID_INTERNAL_STATSD_H_
18*6dbdd20aSAndroid Build Coastguard Worker #define SRC_ANDROID_INTERNAL_STATSD_H_
19*6dbdd20aSAndroid Build Coastguard Worker 
20*6dbdd20aSAndroid Build Coastguard Worker #include <stddef.h>
21*6dbdd20aSAndroid Build Coastguard Worker #include <stdint.h>
22*6dbdd20aSAndroid Build Coastguard Worker 
23*6dbdd20aSAndroid Build Coastguard Worker // This header declares proxy functions defined in
24*6dbdd20aSAndroid Build Coastguard Worker // libperfetto_android_internal.so that access internal android functions (e.g.
25*6dbdd20aSAndroid Build Coastguard Worker // hwbinder).
26*6dbdd20aSAndroid Build Coastguard Worker // Do not add any include to either perfetto headers or android headers. See
27*6dbdd20aSAndroid Build Coastguard Worker // README.md for more.
28*6dbdd20aSAndroid Build Coastguard Worker 
29*6dbdd20aSAndroid Build Coastguard Worker namespace perfetto {
30*6dbdd20aSAndroid Build Coastguard Worker namespace android_internal {
31*6dbdd20aSAndroid Build Coastguard Worker 
32*6dbdd20aSAndroid Build Coastguard Worker extern "C" {
33*6dbdd20aSAndroid Build Coastguard Worker 
34*6dbdd20aSAndroid Build Coastguard Worker // These functions are not thread safe unless specified otherwise.
35*6dbdd20aSAndroid Build Coastguard Worker 
36*6dbdd20aSAndroid Build Coastguard Worker const uint32_t kAtomCallbackReasonStatsdInitiated = 1;
37*6dbdd20aSAndroid Build Coastguard Worker const uint32_t kAtomCallbackReasonFlushRequested = 2;
38*6dbdd20aSAndroid Build Coastguard Worker const uint32_t kAtomCallbackReasonSubscriptionEnded = 3;
39*6dbdd20aSAndroid Build Coastguard Worker 
40*6dbdd20aSAndroid Build Coastguard Worker typedef void (*AtomCallback)(int32_t subscription_id,
41*6dbdd20aSAndroid Build Coastguard Worker                              uint32_t reason,
42*6dbdd20aSAndroid Build Coastguard Worker                              uint8_t* payload,
43*6dbdd20aSAndroid Build Coastguard Worker                              size_t num_bytes,
44*6dbdd20aSAndroid Build Coastguard Worker                              void* cookie);
45*6dbdd20aSAndroid Build Coastguard Worker 
46*6dbdd20aSAndroid Build Coastguard Worker int32_t __attribute__((visibility("default")))
47*6dbdd20aSAndroid Build Coastguard Worker AddAtomSubscription(const uint8_t* subscription_config,
48*6dbdd20aSAndroid Build Coastguard Worker                     size_t num_bytes,
49*6dbdd20aSAndroid Build Coastguard Worker                     AtomCallback callback,
50*6dbdd20aSAndroid Build Coastguard Worker                     void* cookie);
51*6dbdd20aSAndroid Build Coastguard Worker 
52*6dbdd20aSAndroid Build Coastguard Worker void __attribute__((visibility("default")))
53*6dbdd20aSAndroid Build Coastguard Worker RemoveAtomSubscription(int32_t subscription_id);
54*6dbdd20aSAndroid Build Coastguard Worker 
55*6dbdd20aSAndroid Build Coastguard Worker void __attribute__((visibility("default")))
56*6dbdd20aSAndroid Build Coastguard Worker FlushAtomSubscription(int32_t subscription_id);
57*6dbdd20aSAndroid Build Coastguard Worker 
58*6dbdd20aSAndroid Build Coastguard Worker }  // extern "C"
59*6dbdd20aSAndroid Build Coastguard Worker 
60*6dbdd20aSAndroid Build Coastguard Worker }  // namespace android_internal
61*6dbdd20aSAndroid Build Coastguard Worker }  // namespace perfetto
62*6dbdd20aSAndroid Build Coastguard Worker 
63*6dbdd20aSAndroid Build Coastguard Worker #endif  // SRC_ANDROID_INTERNAL_STATSD_H_
64