3重冗長用汎用多数決関数
[詳解]
#include <stdio.h>
#include <stdint.h>
[ソースコード]
3重冗長用汎用多数決関数
majority_vote_for3.h に定義があります。
◆ MAJORITY_VOTE_FOR3_STATUS
◆ majority_vote_for3_copy()
MAJORITY_VOTE_FOR3_STATUS majority_vote_for3_copy |
( |
void * |
res_arg, |
|
|
void * |
array1_arg, |
|
|
void * |
array2_arg, |
|
|
void * |
array3_arg, |
|
|
size_t |
type_len, |
|
|
uint32_t |
length |
|
) |
| |
3重冗長用汎用多数決関数 (コピー)
3重冗長用配列を受け取って多数決を行った結果をresに入れ, 冗長の状態を返す
- 引数
-
[in] | array1_arg | ~ array3_arg 判定したい3重冗長 |
[in] | type_len | sizeof(型)を入れる |
[in] | length | 配列の長さ, 多次元でも実体は1次元なので全長を入れる, 単体の場合は1を |
[out] | res_arg | 返り値のポインタ, あらかじめ確保しておくように |
- 戻り値
-
MAJORITY_VOTE_ERROR | 全不一致が少なくとも1つ存在, 異常 |
MAJORITY_VOTE_MAJORITY | 2:1が少なくとも1つ存在, 正常 |
MAJORITY_VOTE_MATCH | 全てについて全一致, 正常 |
- 覚え書き
- 配列に対して行われるので, 複数のindexで多数決が行われていてもMAJORITY_VOTE_MAJORITYが返ります.
majority_vote_for3.c の 9 行目に定義があります。
◆ majority_vote_for3_sync()
MAJORITY_VOTE_FOR3_STATUS majority_vote_for3_sync |
( |
void * |
array1_arg, |
|
|
void * |
array2_arg, |
|
|
void * |
array3_arg, |
|
|
size_t |
type_len, |
|
|
uint32_t |
length |
|
) |
| |
3重冗長用汎用多数決関数 (同期)
3重冗長用配列を受け取って多数決を行い、全てを一致させた状態にする
- 引数
-
[in] | array1_arg | ~ array3_arg 判定したい3重冗長 |
[in] | type_len | sizeof(型)を入れる |
[in] | length | 配列の長さ, 多次元でも実体は1次元なので全長を入れる, 単体の場合は1を |
- 戻り値
-
MAJORITY_VOTE_ERROR | 全不一致が少なくとも1つ存在, 異常 |
MAJORITY_VOTE_MAJORITY | 2:1が少なくとも1つ存在, 正常 |
MAJORITY_VOTE_MATCH | 全てについて全一致, 正常 |
- 覚え書き
- 配列に対して行われるので, 複数のindexで多数決が行われていてもMAJORITY_VOTE_MAJORITYが返ります. また, これを使えば同期されるので三重冗長されたものの [0] のポインタを取って操作できます.
majority_vote_for3.c の 68 行目に定義があります。