From 5766c8fb3a2547f6fb49649986ef6787be0703a7 Mon Sep 17 00:00:00 2001 From: Laurent Vivier Date: Thu, 18 Dec 2008 20:44:20 +0000 Subject: [PATCH] Add block-size to partition packages. Yaboot uses "block-size" with disk-label packages. This patch add block-size to all partitions packages. Signed-off-by: Laurent Vivier git-svn-id: svn://coreboot.org/openbios/openbios-devel@291 f158a5a8-5612-0410-a976-696ce0be7e32 --- modules/disk-label.c | 20 +++++++++++++++++++- modules/mac-parts.c | 7 +++++++ modules/pc-parts.c | 7 +++++++ modules/sun-parts.c | 7 +++++++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/modules/disk-label.c b/modules/disk-label.c index 0d2b9e4..b4dad9f 100644 --- a/modules/disk-label.c +++ b/modules/disk-label.c @@ -200,12 +200,30 @@ dlabel_load( __attribute__((unused)) dlabel_info_t *di ) PUSH(0); } +static void +dlabel_block_size( dlabel_info_t *di ) +{ + xt_t xt; + + if( !di->part_ih ) + goto no_handler; + + xt = find_ih_method("block-size", di->part_ih); + if ( !xt ) + goto no_handler; + + call_package( xt , di->part_ih ); + return; +no_handler: + PUSH(512); +} + NODE_METHODS( dlabel ) = { { "open", dlabel_open }, { "close", dlabel_close }, { "offset", dlabel_offset }, { "load", dlabel_load }, - + { "block-size", dlabel_block_size }, { "read", dlabel_read }, { "write", dlabel_write }, { "seek", dlabel_seek }, diff --git a/modules/mac-parts.c b/modules/mac-parts.c index 8771eac..1eb93dd 100644 --- a/modules/mac-parts.c +++ b/modules/mac-parts.c @@ -118,6 +118,12 @@ macparts_get_info( macparts_info_t *di ) DPRINTF("macparts_get_info %lld %lld\n", di->offs, di->size); } +static void +macparts_block_size( __attribute__((unused))macparts_info_t *di ) +{ + PUSH(512); +} + static void macparts_initialize( macparts_info_t *di ) { @@ -128,6 +134,7 @@ NODE_METHODS( macparts ) = { { "probe", macparts_probe }, { "open", macparts_open }, { "get-info", macparts_get_info }, + { "block-size", macparts_block_size }, { NULL, macparts_initialize }, }; diff --git a/modules/pc-parts.c b/modules/pc-parts.c index a06dbf4..3cececb 100644 --- a/modules/pc-parts.c +++ b/modules/pc-parts.c @@ -185,6 +185,12 @@ pcparts_get_info( pcparts_info_t *di ) DPUSH( di->size ); } +static void +pcparts_block_size( __attribute__((unused))pcparts_info_t *di ) +{ + PUSH(512); +} + static void pcparts_initialize( pcparts_info_t *di ) { @@ -195,6 +201,7 @@ NODE_METHODS( pcparts ) = { { "probe", pcparts_probe }, { "open", pcparts_open }, { "get-info", pcparts_get_info }, + { "block-size", pcparts_block_size }, { NULL, pcparts_initialize }, }; diff --git a/modules/sun-parts.c b/modules/sun-parts.c index ebeb674..2f00052 100644 --- a/modules/sun-parts.c +++ b/modules/sun-parts.c @@ -172,6 +172,12 @@ sunparts_get_info( sunparts_info_t *di ) PUSH( di->size_hi ); } +static void +sunparts_block_size( __attribute__((unused))sunparts_info_t *di ) +{ + PUSH(512); +} + static void sunparts_initialize( __attribute__((unused))sunparts_info_t *di ) { @@ -182,6 +188,7 @@ NODE_METHODS( sunparts ) = { { "probe", sunparts_probe }, { "open", sunparts_open }, { "get-info", sunparts_get_info }, + { "block-size", sunparts_block_size }, { NULL, sunparts_initialize }, };