Update of /cvsroot/blob/blob/src/lib
In directory usw-pr-cvs1:/tmp/cvs-serv12796
Modified Files:
generic_io.c
Log Message:
- names instead of pointers in ide_copy() and ide_configure()
Index: generic_io.c
===================================================================
RCS file: /cvsroot/blob/blob/src/lib/generic_io.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- generic_io.c 9 May 2002 11:42:23 -0000 1.4
+++ generic_io.c 10 May 2002 15:36:24 -0000 1.5
@@ -45,7 +45,7 @@
* Defines / Makros
*/
-#define IO_MODULE_TEST 1
+#define IO_MODULE_TEST 0
#define IO_DEBUG 1
#if IO_DEBUG
@@ -132,11 +132,17 @@
return 0;
}
-int io_configure( io_driver_t *io, void *conf_data )
+int io_configure( char *io_name, void *conf_data )
{
- DBG( 1, "%s: io=%p, conf_data=%p\n", __FUNCTION__,
- io, conf_data );
+ io_driver_t *io;
+
+ DBG( 1, "%s: io_name=%p, conf_data=%p\n", __FUNCTION__,
+ io_name, conf_data );
+ if ( !io_name )
+ return -EINVAL;
+
+ io = io_get_byname( io_name );
if ( !io )
return -EINVAL;
@@ -155,13 +161,6 @@
if ( !name )
return NULL;
-#if IO_DEBUG
- for ( i=0; i<IO_MAX_DRIVER;i++) {
- DBG( 1, "%s: #%d %p: '%s'\n", __FUNCTION__,
- i, drivers[i], drivers[i]?io_get_name( drivers[i] ):"(NULL)" );
- }
-#endif
-
for ( i=0; i<IO_MAX_DRIVER;i++) {
if (drivers[i]) {
if ( strncmp( io_get_name( drivers[i] ), name, IO_NAME_LEN ) == 0 )
@@ -201,16 +200,16 @@
int io_read( unsigned char *dest, unsigned char *src, size_t amount, io_driver_t *rd )
{
- DBG( 1, "%s: dest=%p, src=%p, amount=%d, rd=%p\n", __FUNCTION__,
+ DBG( 1, "%s: dest=%p, src=%p, amount=%d, io_name=%p\n", __FUNCTION__,
dest, src, amount, rd );
- DBGIO( 5, rd );
-
if ( !rd || !rd->read )
return -EINVAL;
+ DBGIO( 5, rd );
+
/* check bounds */
- if ( (io_get_size( rd ) - (size_t)src) < amount ) {
+ if ( (rd->io_size - (size_t)src) < amount ) {
DBG( 1, "%s: out of bounds!\n", __FUNCTION__ );
return -ERANGE;
}
@@ -220,16 +219,17 @@
int io_write( unsigned char *dest, unsigned char *src, size_t amount, io_driver_t *rd )
{
- DBG( 1, "%s: dest=%p, src=%p, amount=%d, rd=%p\n", __FUNCTION__,
- dest, src, amount, rd );
- DBGIO( 5, rd );
+ DBG( 1, "%s: dest=%p, src=%p, amount=%d, io_name=%p\n", __FUNCTION__,
+ dest, src, amount, rd );
- if ( !rd|| !rd->write )
+ if ( !rd || !rd->write )
return -EINVAL;
+ DBGIO( 5, rd );
+
/* check bounds */
- if ( (io_get_size( rd ) - (size_t)dest) < amount ) {
+ if ( (rd->io_size - (size_t)dest) < amount ) {
DBG( 1, "%s: out of bounds!\n", __FUNCTION__ );
return -ERANGE;
}
@@ -237,21 +237,34 @@
return rd->write( dest, src, amount, rd );
}
-int io_copy( io_driver_t *dest, io_driver_t *src, size_t amount )
+int io_copy( char *dest_name, char *src_name, size_t amount )
{
static unsigned char buffer[512];
int ret = 0;
int blocks, block, to_copy;
unsigned char *adr = NULL;
+ io_driver_t *dest, *src;
- DBG( 1, "%s: dest=%p, src=%p, amount=%d\n", __FUNCTION__,
- dest, src, amount );
+ DBG( 1, "%s: dest_name=%p, src_name=%p, amount=%d\n", __FUNCTION__,
+ dest_name, src_name, amount );
+
+ if ( !src_name || !dest_name )
+ return -EINVAL;
+
+ src = io_get_byname( src_name );
+ if ( !src )
+ return -EINVAL;
+
+ dest = io_get_byname( dest_name );
+ if ( !dest )
+ return -EINVAL;
DBGIO( 5, src );
DBGIO( 5, dest );
- if ( !dest || !src )
- return -EINVAL;
+ if ( amount == 0 ) {
+ amount = io_get_size( src );
+ }
blocks = amount / 512 + (amount%512?1:0);
DBG( 1, "%s: %d blocks (%d bytes) to copy.\n", __FUNCTION__,
@@ -263,7 +276,7 @@
} else {
to_copy = amount;
}
- DBG( 1, "%s: block %d/%d (%d bytes)\n", __FUNCTION__, block, blocks, to_copy );
+ DBG( 1, "%s: block %d/%d (%d bytes)\n", __FUNCTION__, block+1, blocks, to_copy );
/* read from source */
ret = io_read( buffer, adr, to_copy, src );
@@ -384,17 +397,10 @@
int io_test( void )
{
int ret = 0;
- io_driver_t *io0, *io1;
DBG( 1, "%s: version %s\n", __FUNCTION__, module_version );
- io0 = io_get_byname( "RAM0" );
- if ( ret ) return -EINVAL;
-
- io1 = io_get_byname( "RAM1" );
- if ( ret ) return -EINVAL;
-
- ret = io_copy( io1, io0, 768 );
+ ret = io_copy( "RAM1", "RAM0", 768 );
if ( ret ) return -EINVAL;
return 0;
|