From: Stefan E. <se...@us...> - 2002-05-10 15:36:26
|
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; |