mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 06:16:30 +03:00
57 lines
1.9 KiB
C
57 lines
1.9 KiB
C
|
// Copyright 2017 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#ifndef BASE_ALLOCATOR_ALLOCATOR_INTERCEPTION_MAC_H_
|
||
|
#define BASE_ALLOCATOR_ALLOCATOR_INTERCEPTION_MAC_H_
|
||
|
|
||
|
#include <stddef.h>
|
||
|
|
||
|
#include "base/base_export.h"
|
||
|
#include "third_party/apple_apsl/malloc.h"
|
||
|
|
||
|
namespace base {
|
||
|
namespace allocator {
|
||
|
|
||
|
struct MallocZoneFunctions;
|
||
|
|
||
|
// Saves the function pointers currently used by the default zone.
|
||
|
void StoreFunctionsForDefaultZone();
|
||
|
|
||
|
// Same as StoreFunctionsForDefaultZone, but for all malloc zones.
|
||
|
void StoreFunctionsForAllZones();
|
||
|
|
||
|
// For all malloc zones that have been stored, replace their functions with
|
||
|
// |functions|.
|
||
|
void ReplaceFunctionsForStoredZones(const MallocZoneFunctions* functions);
|
||
|
|
||
|
extern bool g_replaced_default_zone;
|
||
|
|
||
|
// Calls the original implementation of malloc/calloc prior to interception.
|
||
|
bool UncheckedMallocMac(size_t size, void** result);
|
||
|
bool UncheckedCallocMac(size_t num_items, size_t size, void** result);
|
||
|
|
||
|
// Intercepts calls to default and purgeable malloc zones. Intercepts Core
|
||
|
// Foundation and Objective-C allocations.
|
||
|
// Has no effect on the default malloc zone if the allocator shim already
|
||
|
// performs that interception.
|
||
|
BASE_EXPORT void InterceptAllocationsMac();
|
||
|
|
||
|
// Updates all malloc zones to use their original functions.
|
||
|
// Also calls ClearAllMallocZonesForTesting.
|
||
|
BASE_EXPORT void UninterceptMallocZonesForTesting();
|
||
|
|
||
|
// Periodically checks for, and shims new malloc zones. Stops checking after 1
|
||
|
// minute.
|
||
|
BASE_EXPORT void PeriodicallyShimNewMallocZones();
|
||
|
|
||
|
// Exposed for testing.
|
||
|
BASE_EXPORT void ShimNewMallocZones();
|
||
|
BASE_EXPORT void ReplaceZoneFunctions(ChromeMallocZone* zone,
|
||
|
const MallocZoneFunctions* functions);
|
||
|
|
||
|
} // namespace allocator
|
||
|
} // namespace base
|
||
|
|
||
|
#endif // BASE_ALLOCATOR_ALLOCATOR_INTERCEPTION_MAC_H_
|