diff packages/io/flash/current/src/legacy_dev.c @ 2816:422d0a343b4d

* include/flash.h: Modest API change: cyg_flash_init() no longer takes a printf function argument. Instead two new API functions are available: cyg_flash_set_printf() and cyg_flash_set_global_printf(). * src/flash.c (CHATTER): Don't attempt output if printf function is NULL. (cyg_flash_init): No longer takes printf arg. (cyg_flash_set_printf): New. Set per-device printf function, locking if needed. (cyg_flash_set_global_printf): New. Set printf function for all devices, locking if needed. * src/flashiodev.c (flashiodev_init): cyg_flash_init no longer takes printf arg, and we can leave global printf at default. * src/flashiodevlegacy.c (flashiodev_init): Ditto. * src/legacy_api.c (flash_init): cyg_flash_init no longer takes printf arg. So call cyg_flash_set_global_printf as well. * src/legacy_dev.c (legacy_flash_init): legacy drivers can't handle NULL printf function, so provide a dummy. * doc/flash.sgml: Document removal of printf functionality of cyg_flash_init() and document cyg_flash_set_printf() and cyg_flash_set_global_printf().
author jlarmour
date Thu, 19 Feb 2009 00:14:26 +0000
parents 74dbf4c3f2e1
children
line wrap: on
line diff
--- a/packages/io/flash/current/src/legacy_dev.c
+++ b/packages/io/flash/current/src/legacy_dev.c
@@ -8,7 +8,7 @@
 // ####ECOSGPLCOPYRIGHTBEGIN####                                            
 // -------------------------------------------                              
 // This file is part of eCos, the Embedded Configurable Operating System.   
-// Copyright (C) 2004, 2006 Free Software Foundation, Inc.                  
+// Copyright (C) 2004, 2006, 2009 Free Software Foundation, Inc.                  
 //
 // eCos is free software; you can redistribute it and/or modify it under    
 // the terms of the GNU General Public License as published by the Free     
@@ -81,6 +81,8 @@ externC code_fun flash_read_buf;
 externC code_fun flash_lock_block;
 externC code_fun flash_unlock_block;
 
+static int dummy_printf( const char *fmt, ... ) {return 0;}
+
 // Initialize the device
 static int 
 legacy_flash_init (struct cyg_flash_dev *dev)
@@ -88,7 +90,11 @@ legacy_flash_init (struct cyg_flash_dev 
   int err;
   static cyg_flash_block_info_t block_info[1];
 
-  flash_info.pf = dev->pf;
+  // Legacy device drivers can't handle NULL printf function
+  if (NULL != dev->pf)
+      flash_info.pf = dev->pf;
+  else
+      flash_info.pf = &dummy_printf;
   
   err=flash_hwr_init();