整数(integer)が16bitで定義される環境での演算処理について
Cente FileSystem Ver4.01 – Ver5.60
Cente FileSystem Ver4.01 – Ver5.60
・fs_time.c修正
"rtc.h"と"string.h"をインクルードしている記述を削除しました。
・opendir_hash関数修正
ct_hash_entry関数に渡す第二引数をct_hash_entry関数に合わせてキャストする様に修正しました。
・readdir_uni関数修正
取得したUNICODE文字列の終端コードの付け方にミスがありました。終端コードを1byte(0x00)から2byte(0x0000)に修正しました。
・fs_lock.c修正
戻り値を常に0を返している箇所を修正しました。
・fs_original.c・fs_system.h修正
16BitCPUでクラスタサイズが64KByte以上のデバイスを使用した時に、コンパイラによってshort型の変数の演算を行い、演算結果を long型に代入する時に、演算結果が17Bit以上になった場合16Bitのみ代入し桁落ちしてしまう不具合を修正しました。
・Cente FileSystem Ver5.50
・Cente FileSystem Ver5.60
・Cente FileSystem Ver5.60
・ハッシュ対応APIの追加
ファイル検索時にハッシュ法を用いる事でファイル検索の高速化を実現しました。
・FAT領域のbitmap化
FAT領域のクラスタの使用/未使用情報をRAM上に持つ事で、空きクラスタ検索時にデバイスドライバのアクセス頻度が低減しクラスタ検索が高速になりました。
・fopen_uni関数修正
既存ファイルを"w"モードでオープンした時に過剰にセマフォ資源を返却している箇所を修正しました。
・ディレクトリキャッシュ処理修正
ディレクトリキャッシュ実行時にローカルバッファに一旦コピーしている箇所を修正しました。
・create_pwc_area関数変更
メータデータ保護機能の管理ファイル作成方法を変更しました。
・fs_system.h修正
-Ver5.50で削除してしまった、Ver5.40までで定義されていたfeofマクロのundefを復活しました。
-ST_WORK構造体で使用していないメンバnameを削除しました。
・fs_memory.c修正
戻り値を常に0を返している箇所の修正しました。
・fs_lock.c修正
-FAT領域セマフォをドライブ毎に獲得する様に取り方修正。
-Ver5.50で削除してしまった、Ver5.40までで用いられていたセマフォ関連関数を復活しました。
・fopen・fopen_cl・fopen_uni・opendir・opendir_cl・opendir_uni・fs_divide・fs_ins_clust関数修正
複数タスクから左記API を同時に実行すると、タイミングによってファイル情報やディレクトリ情報が後から書込み操作したタスクから上書きされてしまう不具合の修正。
fwrite・fread関数修正
クラスタサイズが64KByte以上のデバイスを使用した時に、入出力データバッファ内オフセットをunsigned short型にキャストしている箇所があり、データ書き込み・読み込み時に、本来参照すべき入出力データバッファ内オフセットを参照できずにいた不具合を修正。
ST_FILE構造体のsectnoがクラスタ内の先頭セクタか終端セクタかでAPIが参照バッファ内のオフセット位置を間違えていた箇所の修正。
fs_find_dir_entry・fs_find_dir_entry_root関数修正
(ドット)で始まり、ドットを含む4文字以下全て大文字のファイルディレクトリ名の時にremoveできない不具合の修正。
get_dev1関数修正
アロケーションユニットサイズが64Kbyteの時にscが負の値になる不具合を修正。
fs_memory.c・fs_lock.cソース修正
OSのシステムコール発行時にIDのチェックを行い、不正IDの時はエラーを返しシステムコールを実行しない様に修正。
ダイレクトアクセス機能追加
クラスタ番号・オフセットを指定してファイルアクセスできるAPIを追加しました。
UNICODE対応
UNICODEを指定してファイルアクセスできるAPIを追加しました。
マルチパーテーション対応
基本領域・拡張領域にパーテーション分割されたメディアに対応しました。
ディレクトリキャッシュ機能追加
ディレクトリキャッシュ機能を追加しました。
ファイル分割・クラスタ挿入機能追加
ファイルの分割・クラスタを挿入するAPIを追加しました。
リエントラント対応(排他処理変更)
排他処理について変更を行い、複数タスクからの同時アクセスが可能になりました。
fwrite関数修正
ディスクフルまでの書込みを行なった時に、ファイルポインタの指すST_FILE構造体のsectnoに誤ったセクタ番号を格納してしまい、その後ディスクフルにも関わらず誤った場所にデータを書込めてしまう不具合を修正。(FATを破壊してしまう)
fat_recover関数修正
fat_recover関数内で使用している変数chk_countの型がshort型なので、4GByte以上のストレージデバイスに対応されていない不具合を修正。
fat_recover仕様変更
fat_recoverで使用するバッファサイズをユーザー指定可能になる様に変更。
fs_find_dir_entry関数修正
サブディレクトリ上のロングファイル名のショートエントリがセクタの先頭にあった場合、存在するはずのファイル検索に失敗する不具合を修正。
fclose関数修正
メタデータ保護機能有効時にclr_island_flg()を実行するタイミングを修正
fputc・fputs関数修正
1クラスタ確保前にモードチェックを行っていない不具合を修正。
fopen関数修正
"a"モードでファイルを新規作成できなかった場合に、エラー処理を行っていない不具合を修正。
unmount_disk関数修正
ディレクトリをオープンしたままストレージデバイスを抜くと、オープンディレクトリ用資源の枯渇を招いる不具合を修正。
fs_get_c_dent関数修正
FAT32フォーマットされたストレージデバイスを使用した時に、16BitCPU使用時に開始クラスタ番号上位を取得できない不具合を修正。
マクロ名修正
マクロ名の重複を避けるため「UNICODE」を「FS_UNICODE」に改名。
マクロ名「NORTI」を「ITRON」に改名。
fopen関数修正
ファイル(ディレクトリでは無い)下にファイルが出来てしまう不具合を修正。
mkdir関数修正
ファイル(ディレクトリでは無い)下にディレクトリが出来てしまう不具合を修正。
スタック使用量修正
rename, remove, mkdir, rmdir関数においてメタデータ保護機能無効時であってもスタック使用量が多かった点を修正。
ファイル検索関連修正
エントリがクラスタサイズ丁度だった時、ファイル検索の結果見つからなかった時のエラーコードが正しく無い点を修正。
VFAT不具合修正
FAT12/16ルートディレクトリにおいてロングファイル名のショートエントリでの「~」以降の番号付記不具合を修正。
API選択マクロ不具合修正
API選択マクロの指定に依っては、chk_possect関数にまつわるコンパイルエラーが出る不具合修正。
メタデータ保護機能修正
fs_pwc.cのclr_island_flg()で島状FAT警告フラグのdown countにて0以下になってしまう不具合修正。
fs_pwc.cのcreate_pwc_area(), analyze_pwc(), pwc_repair()にて関数の実体にstatic宣言が抜けていた点を修正。
FATキャッシュ関連修正
FAT32にてFSINFOのNextFreeClusterからブロックキャッシュを確保した場合同一セクタを重複して持ってしまう不具合を修正。(フラッシュの際に上書きによりFAT破壊してしまう)
FSINFOの取り扱い変更
FAT32のFSINFOのFreeClusterCountとNextFreeClusterの扱いをSDA仕様に対応しました。
fwrite関数修正
4G超え時FSYSERへのエラーコードセットを追加修正。
fclose関数修正
メディアアクセスエラーであっても fp開放、メモリプール返却するよう修正。
OS依存部修正
fs_memory.c 生成情報パケットの第5引数を削除しNORTi以外のOSに対応しました。
fs_lock.c 生成情報パケットの第4引数を削除しNORTi以外のOSに対応しました。
rename関数修正
Newnameの長さに対する仕様ミスを修正。
(正しくは、oldnameのパス長+newname <= FULLPATHLEN(258))
引数チェック強化
finfo, chg_attr, get_attr, chg_tstamp, get_tstamp の各関数における引数の正当性チェックを強化しました。
get_attrfp関数修正
エラーコードの引渡しミスを修正。
排他制御関連修正(fs_lock.c)
特定のOS(NORTi)用のマクロ(MSEC)を使っていた点を修正。
rename関数修正
ルートディレクトリ(FAT12/16)に対する電源断対応処理不具合修正。
fclose関数修正
“r”モードで開いたファイルに対しても電源断処理を実施していた点を修正。
電源断対応機能修正(fs_pwc.c)
fs_pwc.cにおいてOS用ヘッダファイル(ctkernel.h)を無条件にインクルードしていた点を修正。
chk_dsk関数修正
FAT32において開始クラスタ番号が65535を超える場合正常に修復できない点を修正。
電源断機能の改善
電源断対応アルゴリズムを大幅に見直す事で旧バージョンでの使用制限を撤廃しました。 これに依りより使いやすく且つ信頼性が向上しました。
チェックディスク機能追加
chk_dsk関数を追加。
Page 15 of 17