2.1.6 Mã lỗi và giá trị trả về sevice call2サービスコールの返値とエラーコード

サービスコールの返値は原則として符号付きの整数で,エラーが発生した場合
には負の値のエラーコード,処理を正常に終了した場合は E_OK(= 0)また
は正の値とする.正常終了した場合の返値の意味はサービスコール毎に規定す
る.この原則の例外として,真偽値( BOOL型)を返すサービスコールと,呼
び出されるとリターンすることのないサービスコールがある.リターンするこ
とのないサービスコールは,C 言語 APIでは返値を持たないもの(すなわち void
型の関数)として宣言する.

Giá trị trả về của service call về nguyên tắc, trong trường hợp phát sinh ra lỗi là âm, trong trường hợp xử lý kết thúc bình thường là E_OK(=0) hoặc là giá trị dương. Ý nhĩa của giá trị trả về trong trường hợp kết thúc bình thường định nghĩa cho mỗi service call. Ngoài quy định này, cũng có những service call không trả về chỗ gọi và service call trả về giá trị true or false(BOOL). Service không trả về giá trị được khai báo là hàm không không cỏ giá trị trả về trong ngôn ngữ lập trình C (gọi là hàm dạng void).
エラーコードは,下位 8ビットのメインエラーコードと,それを除いた上位ビッ
トのサブエラーコードで構成される.メインエラーコード,サブエラーコード
共に負の値とする(サブエラーコードの値とは,エラーコードの値を符号付き
で 8 ビット右シフトしたものである).したがって,それらを組み合わせたエ
ラーコードも負の値となる.メインエラーコードの名称,意味,値は,カーネ
ルおよびソフトウェア部品で共通とし,I TRON仕様共通定義で規定する.メイ
ンエラーコードは,検出の必要性や発生状況などにより,エラークラスに分類
される.

Mã lỗi được tạo thành từ 8bits thấp của mã lỗi chính và 8 bít cao sau khi loại bỏ 8bits này của mã lỗi phụ. Mã lỗi chính và mã lỗi phụ cùng là giá trị âm(giá trị của mã lỗi phụ là dịch phải số học 8 bit. Tương ứng, các mã lỗi đã nhập chúng với nhau cũng trở thành số âm. Giá trị, ý nghĩa và tên của mã lỗi chính được chia sẽ giữa kenerl và bộ phần phần mềm, quy định trong định nghĩa chung của đặc tả ITRON. Mã lỗi chính được phân loại thành mã lỗi dựa vào trạng thái phát sinh, tính cần thiết của phát hiện.
ITRON仕様の各サービスコールの機能説明においては,サービスコールが返す
メインエラーコードのみを記述するのを原則とし,サブエラーコードは実装定
義とする.ただし,ソフトウェア部品仕様において,サブエラーコードについ
ても規定する場合もある.サービスコールの機能説明などに「E _XXXXX エ
ラーを返す」ないしは「E _XXXXX エラーとなる」という記述があった場合,
メインエラーコードを E _XXXXXとするエラーコードを返すことを意味する.
警告クラスのメインエラーコードである場合を除いては,サービスコールがエ
ラーコードを返した場合には,サービスコールを呼び出したことによる副作用
はない(言い換えると,サービスコールを呼び出したことで,システムの状態
は変化していない)のが原則である.ただし,サービスコールの機能上,サー
ビスコールを呼び出したことによる副作用を防げない場合は例外とし,サービ
スコールの機能説明でその旨を明示する.

Định nghĩa thực thi của mã lỗi phụ và nguyên tắc miêu tả nhóm lỗi chính trả về cho service call ở trong thuyết minh chức năng của mỗi service call của đặc tả ITRON. Tuy nhiên, trong đặc tả bộ phận phần mềm, cũng có trường hợp quy định về mã lỗi phụ. サービスコールの機能説明などに「E _XXXXX エ
ラーを返す」ないしは「E _XXXXX エラーとなる」という記述があった場合,
メインエラーコードを E _XXXXXとするエラーコードを返すことを意味する。 trường hợp service call đã trả về giá trị lỗi loại trừ trường hợp mã lỗi chính của cảnh báo, không phản ứng lại  việc gọi service call(Nói cách khác, trong việc gọi service call, trạng thái của hệ thống không thay đổi) là một quy tắc. Tuy nhiên, Trường hợp không thể ngăn chặn việc không phản ứng lại việc gọi service call về phương diện chức năng của service call, là một “ngoại lệ”, chỉ rõ mục đích trong thuyết minh chức năng của service call.
ITRON仕様を実装する場合には,オーバーヘッドを削減するために,一部のエ
ラーの検出を省略することができる.検出を省略することができるエラーは,
メインエラーコードが属するエラークラスによって定めるのを原則とし,エ
ラークラス毎に検出を省略することができる旨を明示する.この原則の例外と
なるケースについては,サービスコールの機能説明でその旨を明示する.エラーの検出を省略したことにより,本来検出すべきエラーを検出できなかった場合の振舞いは未定義である.

trường hợp thự hiện đặc tả ITRON, để giảm overhead, có thể tĩnh lược bớt việc phát hiện lỗi của 1 bộ phận. Lỗi có thể giảm bớt việc phát hiện, là nguyên tắc của việc xây dụng dựa vào lớp lỗi thuộc mã lỗi chính, Chỉ rõ mục đích của việc có thể giảm bớt việc phát hiện của mỗi lợp lỗi. Về trường hợp ngoài nguyên tắc này, chỉ rõ trong miêu tả chức năng của mỗi service call. Hành vi của trường hợp đã không thể phát hiện lỗi nên phát hiện do việc đã tối giản việc phat hiên lỗi là không định nghĩa.
次のメインエラーコードは,多く(または,ほとんどすべて)のサービスコー
ルで発生する可能性があるため,サービスコールが返すメインエラーコードと
してサービスコール毎には記述しないのを原則とする.

mã lỗi chính sau là nguyên tắc không mô mã lỗi cho mối service call và mã lỗi chính trả service call trả về để có thể phát sinh trong hâu hết service call
E_SYS システムエラー
E_NOSPT 未サポート機能
E_RSFN 予約機能コード
E_CTX コンテキストエラー
E_MACV メモリアクセス違反
E_OACV オブジェクトアクセス違反
E_NOMEM メモリ不足

E_SYS Lỗi hệ thống
E_NOSPT chức năng không hỗ trợ
E_RSFN mã chức năng hạn chế
E_CTX lỗi contex
E_MACV vi phạm truy cập bộ nhớ
E_OACV vi phạm truy cập đối tượng
E_NOMEM Thiếu bộ nhớ
ただし,これらのエラーが発生する理由がサービスコール独特のものである場
合などには,この原則にかかわらず,サービスコール毎に記述する.
サービスコールが複数のエラーを検出すべき状況で,どのエラーを示すエラー
コードを返すかは,実装依存とする.

Tuy nhiên trong trường hợp lý do phát sinh các lỗi này là đặc điểm riêng của service call, mô tả các service call không liên quan đến nguyên tắc này.
【補足説明】
E_OK(= 0)は正常終了を示す返値であり,エラーコードではない.ただし,
便宜上,サービスコールが返すエラーコードとして記述する場合がある.
サービスコールでエラーが発生したかを,返値の下位 8ビットが負の値である
かで判断する方法は正しくない.これは,サービスコールの処理が正常に終了
し,返値が正の値であった場合でも,返値の下位 8ビットが負の値である可能
性があるためである.

[thuyết minh bổ sung]

E_OK(=0) là giá trị biếu thị kết thúc bình thường, không phải là lỗi. Tuy nhiên về mặt tiện lợi, có trường hợp mô tả với tư cách là mã lỗi service call trả về. Phương pháp phán có phát sinh lỗi hay không ở service call dựa vào 8bits thấp của giá trị trả về có giá trị âm hay không là không chính xác. Đây là vì có thể khả năng 8 bít thấp là giá trị âm cho dù trường hợp giá trị trả về là dương, xử lý kết thúc bình thường.
【 μITRON3.0 仕様との相違】
エラーコードをメインエラーコードとサブエラーコードから構成されるもの
とし,カーネルとソフトウェア部品でメインエラーコードを共通化することと
した.サブエラーコードは,エラーが発生した原因をより細かく報告すること
を目的としており,主にデバッグ時に使うことを想定している.例えば,メイ
ンエラーコードが E_PAR(パラメータエラー)の場合に,どのパラメータの
値が不正であったかを示すためにサブエラーコードを使うことができる.ま
た, E_OKはエラーコードではないと規定した.

[điểm khác so với uITRON3.0]

Tạo mã lỗi từ mã lỗi chính và mà lỗi phụ, tăng cương việc chia sẽ mã lỗi giữa kernel và bộ phận phần mềm. Mã lỗi phụ có múc đích báo cáo chi tiết hơn nguyên nhân phát sinh lỗi, giả thiết sử dụng chủ yếu khi debug. Ví dụ, trường hợp mã lỗi chính là E_PAR(lỗi tham số), nó có thể sử dụng để biểu thị tham số nào là không chính xác. Hơn nữa,Đã quy định E_OK không phải là lỗi.

一部のエラーの検出を省略することができることを明示し,どのエラーの検出
を省略できるかをエラークラス毎に規定することとした.また,サービスコー
ル毎に記述しないメインエラーコードを見直した.

Chỉ định việc có thể giảm bớt việc phát hiện lỗi của bộ phận, quy định lớp lỗi có thể giảm bớt việc phát hiện lỗi. Và, đưa ra các mã lỗi không miêu tả cho mỗi service call.
μITRON3.0 仕様では,サービスコールの返値に関する原則として,正の値を返
す場合を規定していたが,実際に正の値を返すカーネルのサービスコールはな
かった. μITRON4.0 仕様では,カーネルのサービスコールに,正の値を返すも
のがある.また,真偽値を返すサービスコールを新たに導入した.

Đã định nghĩa trường hợp trả về giá trị dương trên cơ sở cách là nguyên tắc liên quan đến giá trị trả về của service call trong uItron 3.0 nhưng mà thực tế không có service call của kernel trả về giá trị dương. trong uItron4.0 cũng có những service call trả về giá trị dương. Và giới thiệu mới service call trả về true or false.

Leave a Reply