Skip to content

Instantly share code, notes, and snippets.


Rostislav Lisovy lisovy

View GitHub Profile
View c_debugging.txt
Program flow tracing (with source modification)
* assert()
Instead of
if (variable < 0)
assert(variable > 0);
View gst_experiment.c
#include <gst/gst.h>
#include <glib.h>
#include <czmq.h>
#include <pthread.h>
#include <stdio.h>
/* Gstreamer "main" pipeline */
GstElement *pipeline;
void* zmq_thread(void *data)
View mars_board.txt
git clone git://
cd u-boot
# Build U-boot
mkdir _build
make O=_build marsboard_defconfig
View qemu_pci_pass_through.txt
How to use 'pci pass-through' to run Linux in Qemu accessing real Ath9k adapter
# Boot kernel with 'intel_iommu=on'
# Unbind driver from the device and bind 'pci-stub' to it
echo "168c 0030" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:0b:00.0 > /sys/bus/pci/devices/0000:0b:00.0/driver/unbind
echo 0000:0b:00.0 > /sys/bus/pci/drivers/pci-stub/bind
View lwip.txt
pbuf vs. netbuf
pbuf -- internal representation of a packet (should not be directly accessed
when using netconn or socket API).
PBUF_POOL -- one struct containing header + data buffer (+ space reserved for
headers) obtained from a pool of limited amount of statically allocated
structs (i.e. slab allocator).
The size of the whole struct is fixed, in case the data are bigger than the
pre-allocated buffer in a struct, multiple pbufs are chained together
View imx53_voipac
Barebox bootloader
sudo apt-get install lzop, libusb-1.0-0-dev
Build it
git clone git://
cd barebox/
mkdir _build
CROSS_COMPILE=arm-linux-gnueabihf- make ARCH=arm O=_build imx_v7_defconfig
View C_hw_access
Multiplatform programming
Issues to be aware of:
* Integer types sizes (int -- 16 or 32 bits? long -- 32 or 64 bits?)
- Storing pointers into integer types
(unsigned long on 64-bit Linux vs. 64-bit Windows)
* Endianess (big, little)
* Memory access width (byte access, word access)
* Unaligned memory access
View C
Undefined behavior
...If any step in a program's execution has undefined behavior,
then the entire execution is without meaning. This is important:
it's not that evaluating (1<<32) has an unpredictable result,
but rather that the entire execution of a program that evaluates
this expression is meaningless. Also, it's not that the execution
is meaningful up to the point where undefined behavior happens:
for (( i=1 ; $i-10; i=$i+1 ))
sleep 0.5s;
echo -e ' oo\n<|>\n_|_';
sleep 0.5s;
if [ $# -ne 2 ]; then
echo -e "Usage: $0 FLAC_FILE CUE_FILE\n"
exit 1;