blob: dc5be26c1d5fa100457a9ee0a5b9572d18a19b5e [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_GWP_ASAN_CLIENT_GWP_ASAN_FEATURES_H_
#define COMPONENTS_GWP_ASAN_CLIENT_GWP_ASAN_FEATURES_H_
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "components/gwp_asan/client/export.h"
namespace gwp_asan::internal {
GWP_ASAN_EXPORT BASE_DECLARE_FEATURE(kGwpAsanMalloc);
GWP_ASAN_EXPORT BASE_DECLARE_FEATURE(kGwpAsanPartitionAlloc);
// GWP-ASan allows for per-process parameters.
// If no per-process parameter is found, GWP-ASan falls back on
// the global defaults codified in `gwp_asan.cc`.
// Browser reservation params.
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocBrowserMaxAllocations;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocBrowserMaxMetadata;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocBrowserTotalPages;
// Browser sampling params.
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocBrowserAllocationSamplingMultiplier;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocBrowserAllocationSamplingRange;
// Renderer sampling params.
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocRendererAllocationSamplingMultiplier;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocRendererAllocationSamplingRange;
// Renderer sampling params (for PartitionAlloc, not PA-E).
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanPartitionAllocRendererAllocationSamplingMultiplier;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanPartitionAllocRendererAllocationSamplingRange;
// GPU reservation params.
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocGpuMaxAllocations;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocGpuMaxMetadata;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocGpuTotalPages;
// GPU sampling params.
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocGpuAllocationSamplingMultiplier;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kGwpAsanMallocGpuAllocationSamplingRange;
GWP_ASAN_EXPORT BASE_DECLARE_FEATURE(kExtremeLightweightUAFDetector);
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kExtremeLightweightUAFDetectorSamplingFrequency;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kExtremeLightweightUAFDetectorQuarantineCapacityForSmallObjectsInBytes;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kExtremeLightweightUAFDetectorQuarantineCapacityForLargeObjectsInBytes;
GWP_ASAN_EXPORT extern const base::FeatureParam<int>
kExtremeLightweightUAFDetectorObjectSizeThresholdInBytes;
enum class ExtremeLightweightUAFDetectorTargetProcesses {
kAllProcesses,
kBrowserProcessOnly,
kNonRendererProcesses,
};
GWP_ASAN_EXPORT extern const base::FeatureParam<
ExtremeLightweightUAFDetectorTargetProcesses>
kExtremeLightweightUAFDetectorTargetProcesses;
} // namespace gwp_asan::internal
#endif // COMPONENTS_GWP_ASAN_CLIENT_GWP_ASAN_FEATURES_H_