kernels/ksysfs.c: export kernel address bits
Commit Message
This can be used by userspace to determine the address size of the
running kernel.
It frees userspace from having to interpret this information from the
UTS machine field.
Userspace implementation:
https://github.com/util-linux/util-linux/pull/1966
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
Cc: linux-kernel@vger.kernel.org
To: Greg KH <gregkh@linuxfoundation.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: "Karel Zak" <kzak@redhat.com>
Cc: linux-api@vger.kernel.org
---
Documentation/ABI/testing/sysfs-kernel-address_bits | 10 ++++++++++
kernel/ksysfs.c | 9 +++++++++
2 files changed, 19 insertions(+)
---
base-commit: b6bb9676f2165d518b35ba3bea5f1fcfc0d969bf
change-id: 20221221-address-bits-622a8782e73d
Best regards,
new file mode 100644
@@ -0,0 +1,10 @@
+What: /sys/kernel/address_bit
+Date: May 2023
+KernelVersion: 6.3
+Contact: Thomas Weißschuh <linux@weissschuh.net>
+Description:
+ The address size of the running kernel in bits.
+
+ Access: Read
+
+Users: util-linux
@@ -51,6 +51,14 @@ static ssize_t cpu_byteorder_show(struct kobject *kobj,
}
KERNEL_ATTR_RO(cpu_byteorder);
+/* address bits */
+static ssize_t address_bits_show(struct kobject *kobj,
+ struct kobj_attribute *attr, char *buf)
+{
+ return sysfs_emit(buf, "%zu\n", sizeof(void *) * 8 /* CHAR_BIT */);
+}
+KERNEL_ATTR_RO(address_bits);
+
#ifdef CONFIG_UEVENT_HELPER
/* uevent helper program, used during early boot */
static ssize_t uevent_helper_show(struct kobject *kobj,
@@ -233,6 +241,7 @@ static struct attribute * kernel_attrs[] = {
&fscaps_attr.attr,
&uevent_seqnum_attr.attr,
&cpu_byteorder_attr.attr,
+ &address_bits_attr.attr,
#ifdef CONFIG_UEVENT_HELPER
&uevent_helper_attr.attr,
#endif