LwIP

Started by tha, August 29, 2021, 09:15:30 AM

Previous topic - Next topic

tha



สิ่งนี้คล้ายกับ sys_arch_mbox_fetch, อย่างไรก็ตามถ้า a message ไม่ปรากฎใน the mailbox, มันจะรีเทิร์นทันทีด้วย the code SYS_MBOX_EMPTY. เมื่อสำเร็จ 0 ถูกรีเทิร์น. เพื่อยอมให้สำหรับ efficient implementations, นี้สามารถถูกกำหนดเป็น a function-like macro ใน sys_arch.h แทนที่จะเป็น a normal function. ตัวอย่างเช่น, a naive implementation อาจเป็น: #define sys_arch_mbox_tryfetch(mbox,msg) sys_arch_mbox_fetch(mbox,msg,1) แม้ว่าสิ่งนี้จะทำให้เกิดความล่าช้าโดยไม่จำเป็น.

Parameters
          mbox         mbox ที่ได้รับ a message จาก
          msg         ชี้ไปยังที่ๆ the message ถูกเก็บ

Returns
          0 (milliseconds) ถ้า a message ถูกรับแล้วหรือ SYS_MBOX_EMPTY ถ้า the mailbox ว่างเปล่า

tha



คืนการจัดสรร a mailbox. ถ้ามี messages ยังคงปรากฎใน the mailbox เมื่อ the mailbox ถูกคืนการจัดสรร, มันเป็นการแสดงให้เห็นของ a programming error ใน lwIP และ the developer ควรถูกแจ้งให้ทราบ.

Parameters
          mbox     mbox ที่ลบ

tha



สร้าง an empty mailbox สำหรับ maximum "size" elements. Elements ที่เก็บใน mailboxes เป็น pointers. คุณต้องกำหนด macros "_MBOX_SIZE" ใน your lwipopts.h, หรือเพิกเฉย parameter นี้ใน your implementation และใช้ a default size. ถ้า the mailbox ถูกสร้างแล้ว, ERR_OK ควรถูกรีเทิร์น. การรีเทิร์น error อื่นใดๆจะเป็นการบอกใบ้ถึงสิ่งที่ผิดพลาด, แต่ยกเว้นสำหรับการถือสิทธิ์, ไม่มี real error handling ถูกจัดให้มีใช้.

Parameters
          mbox          ชี้ไปยัง the mbox ที่สร้าง
          size                  (minimum) จำนวนของ messages ใน this mbox

Returns
          ERR_OK ถ้าสำเร็จ, err_t อื่นถ้าเป็นอย่างอื่น



tha



โพสต์ a message ไปยัง an mbox - อาจไม่ล้มเหลว -> บล็อกถ้าเต็ม, ถูกใช้เฉพาจาก tasks เท่านั้นไม่จาก ISR!

Parameters
          mbox                 mbox ที่โพสต์ the message
          msg                  message ที่โพสต์ (ข้อควรระวัง : สามารถเป็น NULL)

tha



ทำให้ a mailbox เป็นโมฆะดังนั้น sys_mbox_valid() ส่งคืนค่า 0. ข้อควรระวัง: นี่ไม่ได้หมายความว่า the mailbox จะถูกคืนการจัดสรร: sys_mbox_free() ถูกเรียกก่อนการเรียกฟังชั่นนี้เสมอ! นี้อาจเป็น a define อีกด้วย, ซึ่งในกรณีนี้ ฟังก์ชันจะไม่ถูกสร้างเป็นต้นแบบ.

tha



พยายามโพสต์ a message ไปยัง an mbox - อาจล้มเหลวถ้าเต็ม. สามารถถูกใช้จาก ISR (ถ้า the sys arch layer ยอมให้การนี้). รีเทิร์น ERR_MEM ถ้ามันเต็ม, เป็นอย่างอื่น, ERR_OK ถ้า the "msg" ถูกโพสต์.

Parameters
          mbox                        mbox ที่โพสต์ the message
          msg                     message ที่โพสต์ (ข้อควรระวัง : สามารถเป็น NULL)

tha



พยายามโพสต์ a message ไปยัง an mbox - อาจล้มเหลวถ้าเต็ม. ถูกใช้ได้จาก ISR. รีเทิร์น ERR_MEM ถ้ามันเต็ม, เป็นอย่างอื่น, ERR_OK ถ้า the "msg" ถูกโพสต์.

Parameters
          mbox                 mbox ที่โพสต์ the message
          msg              message ที่โพสต์ (ข้อควรระวัง : สามารถเป็น NULL)

tha



คืนค่า 1 ถ้า the mailbox ใช้ได้, 0 ถ้ามันใช้ไม่ได้. เมื่อใช้ pointers, วิธีง่ายๆคือตรวจสอบ the pointer เพื่อ != NULL. เมื่อใช้ OS structures โดยตรง, การจัดให้มีใช้นี้อาจซับซ้อนมากขึ้น. นี้อาจเป็น a define อีกด้วย, ซึ่งในกรณีนี้ the function จะไม่ถูกสร้างเป็นต้นแบบ.