Commit 311973c0 authored by Arnaud Blanchard's avatar Arnaud Blanchard

Remove file transfered to doc

parent 70279b07
Blaar works with any cmake from version 2.6. ( [cmake documentation](https://cmake.org/cmake/help/cmake2.6docs.html) )
The cmake builds are in `blaar_build/<project>`. You usually do not need to access here.
The makefiles produced are not human readable but you can use `make help` to see the usable targets. To reset everything when you have changed **CMakeLists.txt** run `make ZERO_CHECK`.
The important settings are stored in CMakeCache.txt. It is a good place to check where the libs are found or where different outputs will be.
When you think that your changes have no effect, you can remove this file and relaunch compilation. It is also safe to remove the whole `blaar_build/` directory. However, you should not need it, the important files to changes are **CMakeLists.txt** in the source root of each project.
CMake configuarion
==================
We use conventions which should make you not needing cmake but with cmake it is much easier. It manages dependencies and it is also good when using an integrated development editor ( eclipse, Xcode, ...). It will be also very useful to test the code and to produce bundles or packages.
[[README]] | [[CMAKE]] | [[ROADMAP]]
Compilation
===========
Use `./compile.sh <project dir> [Release|Debug|RelWithDebugInfo|RelMinSize]` (blc, blv4l2, ...)
The binaries will be in `../blaar_buid/<Release_bin|Debug_bin|RelWithDebugInfo_bin|RelMinSize_bin>/` and the libraries in `../blaar_buid/<Release_lib|Debug_lib|RelWithDebugInfo_lib|RelMinSize_lib>/`
In case of problem you may debug: `./debug.sh <project>` or realize memory check with valgrind: `./valgrind.sh <project>`
The cmake build will be in `../blaar_build/<project>/`. ( more details about [[CMAKE]] )
Using an IDE
------------
If you want to edit the code, you can use:
* [With eclipse](ECLIPSE)
* [With xcode](XCODE)
Code documentation
==================
To build and see the documentatoin do: `./doc.sh <project>`
The built documentation will be in `../blaar_build/doc/<project>/html/index.html` and will be launched automatically.
[[blgtk/GTK]]
Source versioning GIT
=====================
The normal flow would be as below,
1) `git stash` your local changes on that branch.
2) `git pull origin branch_name -v` to pull and merge to locally commited changes on that branch, give the merge some message, and fix conflicts if any.
3) `git stash pop` the stashed changes.
4) `git push origin` branch_name -v the merged changes.
\ No newline at end of file
./eclipse_create_project.sh <project dir>
Then you have to launch eclipse
file->import->general->existing projects->select root->browse: `<blaar_build>/eclipse/<project>`
If you want to debug:
run->run configurations->new C/C++ application->browse: `<blaar_build>/Debug_bin/<project>`
Install
=======
Ubuntu
------
sudo apt-get install git cmake g++ doxygen
OS X
----
sudo apt-get install git cmake doxygen
# begin opencl config
modprobe nvidia_340_uvm
mknod -m 666 /dev/nvidia-uvm c 249 0
clinfo
# end opencl config
Then use it
\ No newline at end of file
Mainly manage chars8, uchars8 and floats
Features
========
- teminating processes: done
- showing processes using a shared memory: done
- sending share memory with UDP
f_gnuplot
=========
\ No newline at end of file
Synchronisation
===============
We will have 3 cases:
Preventing writing and reading at the same time
-----------------------------------------------
We can use a semaphore.
Process1
sen_wait semaphore
write
sem_post semaphore
Process2
sem_wait semaphore
read
sem_post semaphore
The problem is that two processes cannot read at the same time, as they should. If the process stop in the writing or reading part, the semaphore is locked for ever. We need mutexes. To share mutexes across processes you need to make them in share memory and define attributes with `pthread_mutexattr_setpshared`, PTHREAD_PROCESS_SHARED. The POSIX muteness have a robust mode that make them unlock it when the process die. On top of it the next unlocked process will know that a process died unexpectedly by receiving the EOWNERDEAD error code. This will allow him to manage corrupted data and eventually relaunch the failing process. It is not implemented in OS X !!!
On OS X, the `pthread_rwlock_init`doe not support PTHREAD_PROCESS_SHARED therefore we avoid it. A solution may be to have one mutex per reader. A bit costly but clear. Otherwise you need a counter but you will not know which process fail for example.
It exists mutex with conditional variable than can be broadcastly changed. The idea would be than a writer can broadcast the new situation to all the readers.
In general
==========
Using synchronization
f_view_channel
--------------
- f_view_channel with multiple channels
- Possibility to have vector or matrix of images
./xcode_project.sh <project dir>
XCode will be automatically launched with the project
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment