[Samsung Galaxy S7 Edge (Exynos) ROMs, Kernels, Rec] klaustroeger:
Did you know: Some explanations on topics "SELinux" and "bit-ness"

Dear all,

(#DID_YOU_KNOW)

as promised, today some explanations around topics "SELinux" and hardware/architecture "bit-ness"

(1) SELinux (see Wikipedia SELinux)

What is SELinux in short:

Security-Enhanced Linux (SELinux) is a Linux kernel security module that provides a mechanism for supporting

access control security policies, including United States Department of Defense–style mandatory access controls (MAC).

(explanation taken from Wikipedia)

Now my own add-on's:

SELinux it can be set to

ENFORCING

PERMISSIVE

DISABLED

Stock ROM's are normally set to ENFORCING, modded, custom ROM's can be set PERMISSIVE

or ENFORCING, depending on the status of the ROM (or added functionality, not allowing

ENFORCING mode).

General target should be to run in ENFORCING mode for security purpose !

As I do not need to explain the meaning of DISABLED, PERMISSIVE just complains about issues

(permission and SElinux context violations, but allows the execution).

It's being used in development phases, if one want to see, what is still wrong, but don't want to

become it a show-stopoer.

ENFORCING is just "enforcing" the rules, which are set, otherwise the executing app fails, if not aligned to....

You can get your current mode either by looking in "Settings -> About phone (phone status) -> SELinux status

or via terminal session (either via app or adb):

klaus@denbvslnx03:~> adb shell getenforce

* daemon not running. starting it now on port 5037 *

* daemon started successfully *

Permissive

(2) Hardware/software architecture "bit-ness" (see 64-bit computing)

Starting from the hardware "bottom to top" to the application/software, this first layer determines

the later software capability ... if 64 or only 32 bit software can run.

While you can run on 64bit hardware with given software support normally 32bit applications,

vice-versa it is not possible.

Many Android applications are written/coded as 32bit applications due to compatibility reasons,

which means, that they would not run on devices/systems, which have only native 64bit support

enabled (by kernel and/or compatibility support libraries etc.) - as a result of this, a pure, 64bit

written/coded app could never run on an "old", 32bit Architecture-based hardware.

You'll find on Wikipedia a comprehensive list of all SAMSUNG smartphones and their model

names.

Let me just take two examples out of my usage history to show you the difference:

Samsung Note 3:

CPU: Qualcomm Snapdragon 800 MSM8974

CPU Clock Speed

==> Up to 2.3 GHz

CPU Cores

==> Quad-core CPU

==> 4x Qualcomm® Krait™ 400 CPU

CPU Bit Architecture

==> 32-bit

Samsung S7 Edge (SN-935F / Exynos) :

CPU: Exynos M1 "Mongoose"

CPU: Cortex-A53

CPU Clock Speed

==> Up to 2.3 GHz

CPU Cores

==> Octa-core CPU

==> 4x Exynos M1 "Mongoose"

==> 4x Cortex A53

CPU Bit Architecture

==> 64-bit

Summarizing:

The SAMSUNG Note 3 is a pure 32bit phone, which is

incapable to run 64bit applications, while our S7 Edge

is a modern 64bit based device, which can run 32 and

64bit applications.

Of course, the kernel, supporting, dynamic libraries

and drivers need to be configured/installed in a way

to allow to run 32bit applications on 64bit hardware.

(these were the issues in recent alpha builds, but are

now fixed)

I hope, these explanations were not too deep-technical

and were helpful to get a bit grip on the technical details.