MTK傳送內部訊息傳送流程

2021-10-05 12:48:55 字數 1596 閱讀 2586

平台環境: 6261a

mtk平台mod和mod之間傳送訊息的流程

使用者使用的引數結構體

/* 訊息體的頭部 */

#define local_para_hdr \

kal_uint8 ref_count; \

kal_uint8 lp_reserved; \

kal_uint16 msg_len;

/* 在local_para_hdr 後面新增你的引數 */

typedef struct local_para_struct

;

申請訊息體空間的介面

/* 這個介面其實是乙個巨集定義 */

(void *)construct_local_para(

local_size, //訊息體長度

td_ctrl //不用配置

);

自定義了訊息體,並且用construct_local_para申請了空間之後就可以封裝為mtk佇列訊息的格式,進行傳送了。

mtk佇列訊息擁有固定的格式:

/* the interlayer message structure, which is exchanged between modules. */

typedef struct ilm_struct ilm_struct;

需要使用專用的介面分配佇列訊息體空間:

ilm_struct *allocate_ilm(module_type module_id);
新增到傳送佇列:

kal_bool msg_send_ext_queue(ilm_struct ilm_ptr);
dest mod需要處理對應的msg;

void module_main(task_entry_struct *task_entry_ptr)

default:

break;}}

free_ilm(&ilm_msg);

}

示例**

typedef struct 

test_message_st;

kal_bool test_msg_send(

module_type src_mod,

module_type dest_mod,

sap_type sap_id,

msg_type msg_id,

local_para_struct *local_para_ptr,

peer_buff_struct *peer_buff_ptr

)kal_bool test_send_message_to_mod(kal_uint8 *data_p, kal_uint16 data_len)

請注意test_send_message_to_mod裡面注釋掉的memset, 如果這裡把整個test_message_st空間都寫0,會導致裡面的local_para_hdr空間也會是0, 這就導致dest_mod在處理這個訊息的時候發生重啟

Kafka 傳送訊息流程

客戶端的幾個元件 一條訊息首先需要確定要被儲存到那個 partition 對應的雙端佇列上 其次,儲存訊息的雙端佇列是以批的維度儲存的,即 n 條訊息組成一批,一批訊息最多儲存 n 條,超過後則新建乙個組來儲存新訊息 其次,新來的訊息總是從左側寫入,即越靠左側的訊息產生的時間越晚 最後,只有當一批訊...

簡易App內部訊息通訊

之前文章介紹了用廣播去通知介面更新,這會兒又無法滿足我的要求 廣播進行訊息通訊 廣播的好處 我現在又為什麼不滿足於廣播?我的需求 為此我需要打的地基 大致的結構 show code created by gss on 2018 2 12 0012.public abstract class base...

Redis實現系列 集群內部訊息

集群內部訊息 集群中的各個節點通過傳送和接收訊息 message 來進行通訊,我們稱傳送訊息的節點為傳送者 sender 接收訊息的節點為接收者 receiver 節點傳送的訊息主要有以下五種 一條訊息由訊息頭 header 和訊息正文 data 組成,接下來的內容將首先介紹訊息頭,然後再分別介紹上...