<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>MQX Software SolutionsのトピックRe: fclose on SDCard filesystemhandle hangs</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240265#M6773</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Tobias&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was wondering if you managed to find a solution to this problem? I am experienceing a similar problem while trying to mount sd card the second time.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 13 Jan 2014 13:15:37 GMT</pubDate>
    <dc:creator>TJ</dc:creator>
    <dc:date>2014-01-13T13:15:37Z</dc:date>
    <item>
      <title>fclose on SDCard filesystemhandle hangs</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240262#M6770</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;if we are using the sdcard we are facing the following problem.&lt;/P&gt;&lt;P&gt;We are mounting the SDCard:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13860633468033556" jivemacro_uid="_13860633468033556"&gt;
&lt;P&gt;void SDCard::mount()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const char szOpenMode[4] = "rw";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( (NULL != filesystem_handle) ) { return; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _mqx_int error_code = MFS_NO_ERROR;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (NULL == com_handle)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _mqx_uint un32Param = SPI_FLAG_FULL_DUPLEX;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Open low level communication device */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; com_handle = _io_fopen(com_name, (const char *)un32Param);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Install SD card device */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ( MQX_OK != _io_sdcard_install((char *)str(ms_szName), (SDCARD_INIT_STRUCT *)&amp;amp;_bsp_sdcard0_init, com_handle))&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(com_name);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable to install device.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (NULL == sdcard_handle)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Open the device which MFS will be installed on */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; sdcard_handle = _io_fopen(str(ms_szName), szOpenMode);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (NULL == sdcard_handle) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable to open device.");&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;#if 1&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Tun32int un32Param = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (IO_OK != _io_ioctl(sdcard_handle, IO_IOCTL_SET_FLAGS, (pointer)&amp;amp;un32Param))&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error setting flags ");&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Install partition manager over SD card driver */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; error_code = _io_part_mgr_install(sdcard_handle, partman_name, 0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (IO_DEVICE_EXISTS == error_code)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" partition manager already installed ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; else if (MFS_NO_ERROR != error_code) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error installing partition manager: ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(MFS_Error_text((uint_32) error_code));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable to open device.");&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _time_delay (20);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;#if 0&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ( !isAvailable() )&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" no card inserted ");&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; turnOff();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;#if 0&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" installing MFS over SD card driver...");&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Install MFS over SD card driver */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; error_code = _io_mfs_install(sdcard_handle, filesystem_name, (_file_size) 0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; switch (error_code)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; case MFS_NO_ERROR:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; case IO_DEVICE_EXISTS:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" MFS already installed ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; default:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error initializing MFS: ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_printf("(%04x) ", error_code);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(MFS_Error_text((uint_32) error_code));&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Open file system */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; filesystem_handle = _io_fopen(filesystem_name, (char)0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (NULL == filesystem_handle)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error opening filesystem: NULL pointer returned. ");&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; error_code = _io_ferror(filesystem_handle);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (MFS_NO_ERROR != error_code) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error opening filesystem: ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_printf("(%04x) ", error_code);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(MFS_Error_text((uint_32) error_code));&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;#if SDCARD_AUTO_FORMAT&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (error_code == MFS_NOT_A_DOS_DISK) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; error_code = _io_ioctl(filesystem_handle, IO_IOCTL_DEFAULT_FORMAT, NULL);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (MFS_NO_ERROR != error_code)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;
&lt;P&gt;#if SDCARD_AUTO_FORMAT&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" mounted to ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(filesystem_name);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;void SDCard::unmount() {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Tun32int error_code;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Close the filesystem */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ((NULL != filesystem_handle)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;amp;&amp;amp; (MQX_OK != _io_fclose(filesystem_handle))) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error closing filesystem.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; filesystem_handle = NULL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Uninstall MFS&amp;nbsp; */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; error_code = _io_mfs_uninstall(filesystem_name);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ( (IO_DEVICE_DOES_NOT_EXIST != error_code) &amp;amp;&amp;amp; (error_code != MFS_NO_ERROR) ) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error uninstalling filesystem ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_printf("(%04x)", error_code);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Uninstall partition manager&amp;nbsp; */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; error_code = _io_part_mgr_uninstall(partman_name);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ( (IO_DEVICE_DOES_NOT_EXIST != error_code) &amp;amp;&amp;amp; (error_code != MFS_NO_ERROR) ) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error uninstalling partition manager ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_printf("(%04x)", error_code);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Close the SD card device */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ((NULL != sdcard_handle)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;amp;&amp;amp; (MQX_OK != _io_fclose(sdcard_handle))) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable to close SD card device.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; sdcard_handle = NULL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;#if SDCARD_DEEP_CLEAN&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (MQX_OK != _io_dev_uninstall((char *)str(ms_szName))) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable uninstall device.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Close the ESDHC device */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ((NULL != com_handle) &amp;amp;&amp;amp; (MQX_OK != _io_fclose(com_handle))) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(com_name);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable to close ESDHC device.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; com_handle = NULL;&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unmounted.");&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After the mounting the access to the sdcard works well. &lt;/P&gt;&lt;P&gt;Then we do the unmount.&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_1386063495164933" jivemacro_uid="_1386063495164933"&gt;
&lt;P&gt;void SDCard::unmount() {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Tun32int error_code;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Close the filesystem */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ((NULL != filesystem_handle)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;amp;&amp;amp; (MQX_OK != _io_fclose(filesystem_handle))) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error closing filesystem.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; filesystem_handle = NULL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Uninstall MFS&amp;nbsp; */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; error_code = _io_mfs_uninstall(filesystem_name);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ( (IO_DEVICE_DOES_NOT_EXIST != error_code) &amp;amp;&amp;amp; (error_code != MFS_NO_ERROR) ) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error uninstalling filesystem ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_printf("(%04x)", error_code);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Uninstall partition manager&amp;nbsp; */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; error_code = _io_part_mgr_uninstall(partman_name);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ( (IO_DEVICE_DOES_NOT_EXIST != error_code) &amp;amp;&amp;amp; (error_code != MFS_NO_ERROR) ) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" error uninstalling partition manager ");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_printf("(%04x)", error_code);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Close the SD card device */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ((NULL != sdcard_handle)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;amp;&amp;amp; (MQX_OK != _io_fclose(sdcard_handle))) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable to close SD card device.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; sdcard_handle = NULL;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;#if SDCARD_DEEP_CLEAN&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (MQX_OK != _io_dev_uninstall((char *)str(ms_szName))) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable uninstall device.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; /* Close the ESDHC device */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if ((NULL != com_handle) &amp;amp;&amp;amp; (MQX_OK != _io_fclose(com_handle))) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(com_name);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unable to close ESDHC device.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; com_handle = NULL;&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts("\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(str(ms_szName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; _io_puts(" unmounted.");&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;This works also well.&lt;/P&gt;&lt;P&gt;But after repeating the progress three time the unmount hangs in the fclose of the SDCard.&lt;/P&gt;&lt;P&gt;We take a deeper look inside and found out that it hangs in a sem_destroy.&lt;/P&gt;&lt;P&gt;Could it be a problem if different tasks mount / umount the SDCard?&lt;/P&gt;&lt;P&gt;Can someone help?&lt;/P&gt;&lt;P&gt;Thanks and regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tobias&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Dec 2013 09:40:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240262#M6770</guid>
      <dc:creator>TobiasBystricky</dc:creator>
      <dc:date>2013-12-03T09:40:22Z</dc:date>
    </item>
    <item>
      <title>Re: fclose on SDCard filesystemhandle hangs</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240263#M6771</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The sem_destroy is in function _io_mfs_uninstall_internal at line 139&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13860845759266167" jivemacro_uid="_13860845759266167"&gt;
&lt;P&gt;static int_32 _io_mfs_uninstall_internal&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IO_DEVICE_STRUCT_PTR&amp;nbsp;&amp;nbsp; dev_ptr&amp;nbsp; /* [IN] The device to uninstall */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MFS_DRIVE_STRUCT_PTR&amp;nbsp;&amp;nbsp; drive_ptr;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; drive_ptr = (MFS_DRIVE_STRUCT_PTR)dev_ptr-&amp;gt;DRIVER_INIT_PTR;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( !drive_ptr-&amp;gt;MFS_FILE_PTR )&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = IO_OK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _lwsem_destroy(&amp;amp;drive_ptr-&amp;gt;SEM);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _mfs_partition_destroy(drive_ptr-&amp;gt;HANDLE_PARTITION);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _mem_free(drive_ptr);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = MFS_SHARING_VIOLATION;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return error;&lt;/P&gt;
&lt;P&gt;}&amp;nbsp; &lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;Here line 14...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Dec 2013 15:29:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240263#M6771</guid>
      <dc:creator>TobiasBystricky</dc:creator>
      <dc:date>2013-12-03T15:29:56Z</dc:date>
    </item>
    <item>
      <title>Re: fclose on SDCard filesystemhandle hangs</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240264#M6772</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I found out that the semaphore is not existing anymore:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="2013-12-03_16h53_45.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/41274i3B3034B9EBADA044/image-size/large?v=v2&amp;amp;px=999" role="button" title="2013-12-03_16h53_45.png" alt="2013-12-03_16h53_45.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="2013-12-03_16h55_12.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/41295i687355CBC73AC6D4/image-size/large?v=v2&amp;amp;px=999" role="button" title="2013-12-03_16h55_12.png" alt="2013-12-03_16h55_12.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;In the semaphore overview the semaphore is not listed but a lot of semaphores with senseless content.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Dec 2013 15:57:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240264#M6772</guid>
      <dc:creator>TobiasBystricky</dc:creator>
      <dc:date>2013-12-03T15:57:23Z</dc:date>
    </item>
    <item>
      <title>Re: fclose on SDCard filesystemhandle hangs</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240265#M6773</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Tobias&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was wondering if you managed to find a solution to this problem? I am experienceing a similar problem while trying to mount sd card the second time.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jan 2014 13:15:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/fclose-on-SDCard-filesystemhandle-hangs/m-p/240265#M6773</guid>
      <dc:creator>TJ</dc:creator>
      <dc:date>2014-01-13T13:15:37Z</dc:date>
    </item>
  </channel>
</rss>

