Function pointer link stubs


Last week been test-driving some C code again and found that not much people are familiar with the "function pointer link stub". This is an excellent technique in C to dynamically replace library calls without adjusting the library.

Imagine, you are working on some embedded software. You will have a couple of libraries that you use, but you won't link to it when unit testing. Instead you stub them out. But, a link stub cannot be adjusted on run-time, so how do you handle this? With... "function pointer link stubs".

The idea is simple. You stub out the library and your stub calls a function pointer when its set. When not set, it just returns success.

Here is some example code:

.h (in a library where we cannot change the header)

int aLibraryCallWeCannotChange(int param);

----------------
aLibraryStub.h

extern int (*aLibraryCallWeCannotChangeFp)(int param);

-----------------
aLibraryStub.c

int aLibraryCallWeCannotChange(int param)
{
   if (aLibraryCallWeCannotChangeFp) aLibraryCallWeCannotChangeFp(param);
   return 0;
}

int (*aLibraryCallWeCannotChangeFp)(int param) = NULL;

-------------------------
TestThatUsesLibrary.cpp

TEST_GROUP(blah)
{
   void setup()
   {
       UT_PTR_SET(aLibraryCallWeCannotChangeFp, dynamicStubOfALibraryCall);
   }
}

Now it is easy to place the code of your stub close to your tests and you will never have to change the linker stub code.

Read more

ในวันที่เพื่อนผิดข้อตกลง

ในวันที่เพื่อนผิดข้อตกลง

หนังสือ Teamwork is an individual skill ของ Christopher Avery เป็นคลังสมบัติจริง ๆ มีหลายหลักการที่ผมเก็บสะสมมาล้วนถูกรวบรวมอยู่ในเล่มนี้ หนังสือเล่มนี้เน้นการสร้างทีมในฝัน แทนที่จะตามหาทีมในฝัน ไม่ว่าเพื่อนร่วมทีมจะเป็นยังไง หนังสื

By Chokchai
Prolonged fasting 2025

Prolonged fasting 2025

ผมตื่นมาเช้านี้ รู้สึกเลยว่าหมดแรง ลองพยายามกำมือแน่น ๆ แต่กำไม่ไหวเลย เรี่ยวแรงมันน้อยไปหมด ลุกขึ้นช้า ๆ หลังปรับความดันได้ ก็ลองไปชั่งน้ำหนัก ลงไปอีก 0.35 กิโลจากเมื่อวาน ลองวัดความดันดู ความดันปรกติ 115/75 ค่อย ๆ พาตั

By Chokchai
ชีวิต

ชีวิต

ผมกำลังพยายามทำ prolonged fasting (อดอาหาร 72 ชั่วโมง) ครั้งแรกในชีวิต ณ ตอนนี้เป็นชั่วโมงที่ 34 เมื่อเช้าตอนออกไปวิ่ง 5 ก.ม. ระหว่างวิ่งอยู่ก็นึกขึ้นมาได้ว่าตอนถือศีลอด (ตามหลักศาสนาอิสลาม) ซึ่งอดตั้งแต่พระอาทิตย์ขึ้นจนพระอาทิตย์ตกดิน ผมเคยคิ

By Chokchai
ประโยชน์ของการอดอาหารนาน ๆ

ประโยชน์ของการอดอาหารนาน ๆ

Prolonged fasting หลายคนอาจจะเคยได้ยินว่าการอดอาหารนาน ๆ (prolonged fasting) ช่วยให้เราเด็กลง ซึ่งฟังดูเหลือเชื่อมาก วันก่อนน้องเขยผมเล่าให้ฟังว่าหลังจากอดอาหารนาน ๆ เกิดประโยชน์อะไรขึ้นกับร่างกายบ้าง ทำให้ผมเข้าใจกลไกที่ทำให้เด็กลงมากขึ้น เลยอยากเอามาแบ่งปัน ก่อนหน้านี้ผมเคยเล่

By Chokchai