Skip to content

Instantly share code, notes, and snippets.

Rostislav Lisovy lisovy

Block or report user

Report or block lisovy

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
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;
You can’t perform that action at this time.