How can you see which code a module executes when your app calls an ioctl system call? Consider this situation: You app gets to the point where it executes an ioctl syscall and returns an error, e.g. if (ioctl(fd, STVMIX_IOC_DISCONNECTLAYERS, &STVMIX_Ioctl_DisconnectLayers) != 0) { /* IOCTL failed */ ErrorCode = ST_ERROR_BAD_PARAMETER; printf (” STVMIX_DisconnectLayers():Ioctl error […]
C programming
Pages related to the C programming language.
How to convert UNIX datetime value to date/time string in OpenOffice Calc or Excel
To convert a UNIX datetime value to date/time string in OpenOffice Calc or Excel use this formula (assumes your datetime stamp is in the A1 cell of the current spreadsheet): =A1/86400+DATEVALUE(“1/1/1970”) If you want to test the above you may use the following simple C program: ======= #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> […]
How to map enum to strings in C
How can we map the enum values to strings in the C programing language? Often times you need to display a C enum as a string, most often when debugging or handling error conditions. Typical techiques involve usually: a) defining an array of strings (the strings being the enum names of course, and the string […]
Converting defines to strings in precompiler directives
Often times it is useful to construct a string visible to the pre-compiler and assemble it from one more more other values, defined by means of a #define dierctive. Here’s some example code (this is some custom environemnt config for U-Boot for a STM-based device I work with): #if defined( DEVELOPER_ALAN ) #define CONFIG_ETHADDR 00:23:b0:00:00:00 […]
GDB – how to step into uClibc if you have .debug files
1. Make sure your debuginfo files are part of LD_LIBRARY_PATH. To do this, either a) add the path where you stored the .debug files to your LD_LIBRARY_PATH environment variable, e.g.: $ export LD_LIBRARY_PATH=/opt/STM/STLinux-2.3/devkit/sh4_uclibc/target/usr/lib/debug:/opt/STM/STLinux-2.3/devkit/sh4_uclibc/bin/../lib:/opt/STM/STMCR1.5.0/lib:/opt/STM/STLinux-2.3/devkit/sh4_uclibc/bin/../../../host/stmc/lib Then restart gdb. OR b) start gdb and set the LD_LIBRARY_PATH from within gdb: (gdb) set env LD_LIBRARY_PATH /opt/STM/STLinux-2.3/devkit/sh4_uclibc/target/usr/lib/debug:/opt/STM/STLinux-2.3/devkit/sh4_uclibc/bin/../lib:/opt/STM/STMCR1.5.0/lib:/opt/STM/STLinux-2.3/devkit/sh4_uclibc/bin/../../../host/stmc/lib In my case […]
Convert UNIX time_t into a date/time text string
Often times, when working with the standard Linux/UNIX time format (time_t) one needs to quickly find out what is the “human readable” date and time text string a particular time_t value corresponds to. NOTE: The ‘C’ time_t type is the number of seconds elapsed since the “epoch”, the epoch being January 1st 1970 at 00:00:00. […]
How to find out my libc (glibc) version?
To check your libc (glibc) version type “ls -l /lib/libc.” and hit TAB. This should expand the line into the name of your libc library file, e.g. something like /lib/libc.so.6 Umm… no, the .6 does not mean that your glibc version is 6, unfortunately it is a little more complicated than that 🙂 … but not […]
How can I make gcc do this…
This post will be dedicated to gcc’s command line options and various other questions related to compiling/building your code with gcc. For example… ——————– How can I get gcc to generate assembly code for my C file: gcc -O2 -S -c foo.c ——————– How can I tell gcc to generate an assembly listing? (that is […]