[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 7/7] sparc64: #blocks64 disk node method
From: |
Eric Snowberg |
Subject: |
[PATCH 7/7] sparc64: #blocks64 disk node method |
Date: |
Mon, 26 Feb 2018 17:34:20 -0800 |
Return the 64bit number of blocks of storage associated with the device or
instance. Where a "block" is a unit of storage consisting of the number of
bytes returned by the package's "block-size" method. If the size cannot be
determined, or if the number of blocks exceeds the range return -1.
Signed-off-by: Eric Snowberg <address@hidden>
---
grub-core/kern/sparc64/ieee1275/ieee1275.c | 24 ++++++++++++++++++++++++
include/grub/sparc64/ieee1275/ieee1275.h | 1 +
2 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/grub-core/kern/sparc64/ieee1275/ieee1275.c
b/grub-core/kern/sparc64/ieee1275/ieee1275.c
index ed68d61..6e5b90a 100644
--- a/grub-core/kern/sparc64/ieee1275/ieee1275.c
+++ b/grub-core/kern/sparc64/ieee1275/ieee1275.c
@@ -118,3 +118,27 @@ grub_ieee1275_num_blocks (grub_ieee1275_ihandle_t ihandle)
return args.blocks;
}
+grub_uint64_t
+grub_ieee1275_num_blocks64 (grub_ieee1275_ihandle_t ihandle)
+{
+ struct nblocks_args_ieee1275
+ {
+ struct grub_ieee1275_common_hdr common;
+ grub_ieee1275_cell_t method;
+ grub_ieee1275_cell_t ihandle;
+ grub_ieee1275_cell_t catch_result;
+ grub_ieee1275_cell_t hi_blocks;
+ grub_ieee1275_cell_t lo_blocks;
+ }
+ args;
+
+ INIT_IEEE1275_COMMON (&args.common, "call-method", 2, 3);
+ args.method = (grub_ieee1275_cell_t) "#blocks64";
+ args.ihandle = ihandle;
+ args.catch_result = 1;
+
+ if ((IEEE1275_CALL_ENTRY_FN (&args) == -1) || (args.catch_result != 0))
+ return -1;
+
+ return ((args.hi_blocks << 32) | (args.lo_blocks));
+}
diff --git a/include/grub/sparc64/ieee1275/ieee1275.h
b/include/grub/sparc64/ieee1275/ieee1275.h
index 2ddf44d..4b18468 100644
--- a/include/grub/sparc64/ieee1275/ieee1275.h
+++ b/include/grub/sparc64/ieee1275/ieee1275.h
@@ -43,6 +43,7 @@ extern int EXPORT_FUNC(grub_ieee1275_alloc_physmem)
(grub_addr_t *paddr,
grub_size_t size,
grub_uint32_t align);
extern grub_uint64_t EXPORT_FUNC(grub_ieee1275_num_blocks) (grub_uint32_t
ihandle);
+extern grub_uint64_t EXPORT_FUNC(grub_ieee1275_num_blocks64) (grub_uint32_t
ihandle);
extern grub_addr_t EXPORT_VAR (grub_ieee1275_original_stack);
--
1.7.1
- [PATCH 0/7] Add additional IEEE1275 methods, Eric Snowberg, 2018/02/26
- [PATCH 1/7] ieee1275: decode-unit command for 4 addr cell devs, Eric Snowberg, 2018/02/26
- [PATCH 2/7] ieee1275: encode-unit command for 4 addr cell devs, Eric Snowberg, 2018/02/26
- [PATCH 3/7] ieee1275: set-address bus specific method, Eric Snowberg, 2018/02/26
- [PATCH 4/7] ieee1275: no-data-command bus specific method, Eric Snowberg, 2018/02/26
- [PATCH 5/7] ieee1275: block-size deblocker support method, Eric Snowberg, 2018/02/26
- [PATCH 6/7] sparc64: #blocks disk node method, Eric Snowberg, 2018/02/26
- [PATCH 7/7] sparc64: #blocks64 disk node method,
Eric Snowberg <=