46 lines
1.4 KiB
Java
46 lines
1.4 KiB
Java
![]() |
// Copyright 2012 The Chromium Authors
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
package org.chromium.base;
|
||
|
|
||
|
import org.jni_zero.JNINamespace;
|
||
|
import org.jni_zero.NativeMethods;
|
||
|
|
||
|
// The only purpose of this class is to allow sending CPU properties
|
||
|
// from the browser process to sandboxed renderer processes. This is
|
||
|
// needed because sandboxed processes cannot, on ARM, query the kernel
|
||
|
// about the CPU's properties by parsing /proc, so this operation must
|
||
|
// be performed in the browser process, and the result passed to
|
||
|
// renderer ones.
|
||
|
//
|
||
|
// For more context, see http://crbug.com/164154
|
||
|
//
|
||
|
// Technically, this is a wrapper around the native NDK cpufeatures
|
||
|
// library. The exact CPU features bits are never used in Java so
|
||
|
// there is no point in duplicating their definitions here.
|
||
|
//
|
||
|
@JNINamespace("base::android")
|
||
|
public abstract class CpuFeatures {
|
||
|
/** Return the number of CPU Cores on the device. */
|
||
|
public static int getCount() {
|
||
|
return CpuFeaturesJni.get().getCoreCount();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return the CPU feature mask.
|
||
|
* This is a 64-bit integer that corresponds to the CPU's features.
|
||
|
* The value comes directly from android_getCpuFeatures().
|
||
|
*/
|
||
|
public static long getMask() {
|
||
|
return CpuFeaturesJni.get().getCpuFeatures();
|
||
|
}
|
||
|
|
||
|
@NativeMethods
|
||
|
interface Natives {
|
||
|
int getCoreCount();
|
||
|
|
||
|
long getCpuFeatures();
|
||
|
}
|
||
|
}
|