Thu, 15 Jan 2015 15:59:08 +0100
Implement a real Private Browsing Mode condition by changing the API/ABI;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
12 #include "vpx_config.h"
13 #include "vp8_rtcd.h"
14 #if ARCH_ARM
15 #include "vpx_ports/arm.h"
16 #elif ARCH_X86 || ARCH_X86_64
17 #include "vpx_ports/x86.h"
18 #endif
19 #include "vp8/common/onyxc_int.h"
21 #if CONFIG_MULTITHREAD
22 #if HAVE_UNISTD_H && !defined(__OS2__)
23 #include <unistd.h>
24 #elif defined(_WIN32)
25 #include <windows.h>
26 typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
27 #elif defined(__OS2__)
28 #define INCL_DOS
29 #define INCL_DOSSPINLOCK
30 #include <os2.h>
31 #endif
32 #endif
34 #if CONFIG_MULTITHREAD
35 static int get_cpu_count()
36 {
37 int core_count = 16;
39 #if HAVE_UNISTD_H && !defined(__OS2__)
40 #if defined(_SC_NPROCESSORS_ONLN)
41 core_count = sysconf(_SC_NPROCESSORS_ONLN);
42 #elif defined(_SC_NPROC_ONLN)
43 core_count = sysconf(_SC_NPROC_ONLN);
44 #endif
45 #elif defined(_WIN32)
46 {
47 PGNSI pGNSI;
48 SYSTEM_INFO sysinfo;
50 /* Call GetNativeSystemInfo if supported or
51 * GetSystemInfo otherwise. */
53 pGNSI = (PGNSI) GetProcAddress(
54 GetModuleHandle(TEXT("kernel32.dll")), "GetNativeSystemInfo");
55 if (pGNSI != NULL)
56 pGNSI(&sysinfo);
57 else
58 GetSystemInfo(&sysinfo);
60 core_count = sysinfo.dwNumberOfProcessors;
61 }
62 #elif defined(__OS2__)
63 {
64 ULONG proc_id;
65 ULONG status;
67 core_count = 0;
68 for (proc_id = 1; ; proc_id++)
69 {
70 if (DosGetProcessorStatus(proc_id, &status))
71 break;
73 if (status == PROC_ONLINE)
74 core_count++;
75 }
76 }
77 #else
78 /* other platforms */
79 #endif
81 return core_count > 0 ? core_count : 1;
82 }
83 #endif
85 void vp8_clear_system_state_c() {};
87 void vp8_machine_specific_config(VP8_COMMON *ctx)
88 {
89 #if CONFIG_MULTITHREAD
90 ctx->processor_core_count = get_cpu_count();
91 #endif /* CONFIG_MULTITHREAD */
93 #if ARCH_ARM
94 ctx->cpu_caps = arm_cpu_caps();
95 #elif ARCH_X86 || ARCH_X86_64
96 ctx->cpu_caps = x86_simd_caps();
97 #endif
98 }