C :: Implement Mutex Lock Using Atomic Hardware Instruction
Mar 25, 2014
Consider how to implement a mutex lock using an atomic hardware instruction. Assume that the following structure defining the mutex lock is available:
Code:
typedef struct {
int available;
}
lock; (available == 0)
indicates that the lock is available, and a value of 1 indicates that the lock is unavailable. Using this struct, illustrate how the following functions can be implemented using the test and set() and compare and swap() instructions:
void acquire(lock *mutex)
void release(lock *mutex)
Be sure to include any initialization that may be necessary.
View 2 Replies
ADVERTISEMENT
Jul 11, 2014
I was trying to put mutex lock on shared memory but my code is not working. What I want is that if some process is putting something on shared memory segment, other process should not be able to access that segment. For testing , I create a server program which put data in shared memory and client program which access the data.
To test it, I put break point after:
pthread_mutex_lock(&(init_lock));
But I see that client program was able to access shared memory.
Below is code:
Server: Code: pthread_mutex_t init_lock = PTHREAD_MUTEX_INITIALIZER;
main()
{
char c;
[Code].....
View 1 Replies
View Related
Aug 22, 2013
I have problems when implementing the IDIV Instruction in gcc assembler, the program has compiled ok, but when executing function that imparts the asm codes which contained the IDIV instruction the error box immediately appeared announcing that it should terminates the program quickly.
The following is the complete listing of the program that I just been working on it:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
signed long divider(signed long num, signed long divisor);
int main(int argc, char* argv[]) {
signed long dn0,dn1,dn2;
[code]....
I compiled it with DevCpp 4.9.9.2, and I had tried on CodeBlocks, in CodeBlocks I made used the int64_t type but still it could not works more..
View 6 Replies
View Related
Jun 30, 2013
I am using atomic instructions on x64 and variables so used must be 16 byte aligned.
I use a number of structures where their members are so operated upon.
The structures accordingly needs must be 16 byte aligned and padded - their internal members must be on 16 byte boundaries and, crucially, there must be tail padding to a 16 byte boundary, so I can allocate arrays of these structures and use pointer math to iterate. (I am naturally using aligned malloc).
The problem I am finding is that it is not apparent to me how to achieve this end. Here below we have a test structure (currently I'm working with the latest Amazon Linux GCC, 4.6.3, on x64);
Code:
#define LFDS700_ALIGN_DOUBLE_POINTER 16
#define LFDS700_ALIGN(alignment) __attribute__( (aligned(alignment)) )
LFDS700_ALIGN(LFDS700_ALIGN_DOUBLE_POINTER) struct test_element
{
struct lfds700_freelist_element
[Code] ....
I allocate an array of test elements, thus;
Code:
te_array = abstraction_aligned_malloc( sizeof(struct test_element) * 100000, LFDS700_ALIGN_DOUBLE_POINTER );
The problem manifest is that sizeof(struct test_element) is 40 bytes! So the second element does not begin on a 16 byte boundary and we all fall down. Printing the addresses of the first element in the test element array, I see the following;
Code:
(gdb) print *ts->te_array
$2 = {fe = {next = {0x7fffec0008d0, 0x2}, user_data = 0x7fffdc0008d0}, thread_number = 3, datum = 0}
(gdb) print sizeof(struct test_element)
$3 = 40
(gdb) print &ts->te_array->fe.next
[Code] ....
So we see fe->next is the first element and so is correctly aligned curtsey of aligned malloc, where fe->next is 16 bytes, fe->user_data is correctly aligned, but then te->thread_number is misaligned and te->datum is given eight bytes rather than four, leaving us in the end without correct tail padding to a 16 byte boundary.
So, what gives? how *am* I supposed to indicate to the compiler it must pad structures to 16 byte boundaries?
View 8 Replies
View Related
Jun 8, 2014
Finding valence electrons from atomic number in c++...
View 3 Replies
View Related
Oct 23, 2013
i have some mathematics instruction to resolve
|z - c| =< r and|z - w| =< d
Because i want just one number , i used randomise
Code:
mini =min((d-w),(c-r));
maxi=max((d+w),(r+c));
z=mini + (rand()%(maxii - minii));
It give me random number but when i use it to calculate another
Code:
f=sqrt(pow(d,2)-pow((z-w),2));
It give me error because many times the "z"is very height
so i get negative inter the sqrt.how i resolve this problem ? shall i add another limit to the Z?
View 3 Replies
View Related
Jan 17, 2013
I want to know how mutex is working in process synchronization. Where these mutexes are stored in memory how another process know about this mutex?
If two different mutexes are having same name what will happen?
View 6 Replies
View Related
Mar 1, 2013
If any exception occurs in critical section code then what sort of issue which we see in terms of synchronization objects?
Before and after the critical section code, Mutex is locked and unlocked. But if any exception occurs then the waiting thread will be waiting for resource to be freed as Mutex is not unlocked due to the exception.
View 5 Replies
View Related
Mar 11, 2013
I've verified this on ubuntu 12.10 and on windows/mingw, and found that g++ version 4.7.2 seems to have broken thread/mutex support.
View 11 Replies
View Related
Jan 21, 2015
I try to crypt file with XOR instruction, by always receive segmentation fault. What's wrong with it?
Code:
#include <stdio.h>
main() {
FILE *fin,*fout;
char buff[40];
int a=0x11;
int i=0;
[Code] ....
View 4 Replies
View Related
Feb 24, 2013
It is my first time in use lock detect so i didn't now how to start.
how to define the lock detect?
View 4 Replies
View Related
Aug 30, 2014
For a larger program I need a way to tell if a "lock knob" is going clockwise or counterclockwise. So below, I have my MoveLock function (That our teacher actually gave us to use) that reads inputs from the arrow keys and displays them. But what I need is to be able to count each time its moved in the correct direction and to reset the count it if it has gone in the other. Right now I'm just testing if it's going clockwise. I thought to solve this by resetting the count if it was less than the returned value from MoveLock (which is a count to compare to the former). Currently, it only displays the current position and the count as -1 or 1.
#include <iostream>
#include <windows.h>
#include <iomanip>
using namespace std;
HANDLE inKeys = GetStdHandle(STD_INPUT_HANDLE);
HANDLE screen = GetStdHandle(STD_OUTPUT_HANDLE);
[code]....
View 2 Replies
View Related
Mar 6, 2015
Auto lock screen coding for windows phone 8.1.
View 2 Replies
View Related
Aug 31, 2014
I am trying to compare performance of different lock-free queues, therefore, I want to create a stress test - which includes pushing/popping user-defined pre-built objects to and from the queue. My question is how can perform the stress test with pushing and popping objects instead of pointers to object like I have done in my code. What is the different in terms of performance of pushing/popping objects Vs. pushing/popping pointers.
#include <cstdlib>
#include <stdio.h>
#include <string>
[Code]....
View 3 Replies
View Related
Jan 20, 2015
I am working on a paint program (already quite well developed) and I have a 'Resize' option in my Menu. When pressed it activates a custom dialog for resizing the image with 2 numeric up/downs to adjust width and height. It all works perfectly. But I want to include an 'Aspect Lock' checkBox like a professional program would have. It should immediately change both values as you adjust either one.
Here's where I am totally stumped! Of course I have tried and tried various codes, but nothing works properly. My values jump erratically or won't change at all. I wonder if trying to change the value of one numeric up/down while inside the code block for changing the value of the other one has got them screwing with each other somehow. Any example code that could accomplish what I'm trying to do?
View 5 Replies
View Related
Jun 26, 2012
I have a event called dataTree_AfterSelect in which I have some code which I want to execute as atomic operation like this:
protected void dataTree_AfterSelect(event params)
{
code that should not be disturbed
}
What is happening now is, I am able to select another node of tree & in that case another execution of above function starts causing a garbled result.
What I want is, user should be able to click on tree node but execution of code block should only start after first execution is totally over.
View 4 Replies
View Related
Mar 25, 2013
I m trying to lock a single skeleton using Microsoft Kinect SDK v 1.7 . My requirements are
•First lock a single skeleton.
•Check the tracking state of the of the locked skeleton.
•If the tracking state of the locked skeleton is NOT Tracked,then
• ----->check for the next closest skeleton
•----->lock this skeleton.
How do I do this using vc++2010. The code which i tried is given below.
Code:
TrackSingleSkeleton(NUI_SKELETON_FRAME* pSkeletonFrame) {
DWORD dwTrackingIDs[NUI_SKELETON_MAX_TRACKED_COUNT]={0, 0};
m_pNuiSensor->NuiSkeletonTrackingEnable(m_hNextSkeletonEvent,NUI_SKELETON_TRACKING_FLAG_TITLE_SETS_TRACKED_SKELETONS);
[Code]....
View 1 Replies
View Related
May 20, 2013
I'm trying to learn how to implement vectorization. Lets say I have this an array like this.
Code: int Array[10] = { 3,4,5,3,4,5,6,7,8,9};
If I traverse through the array and preform some simple calculation like adding numbers, how would I go about vectorizing this feat? For example if I want to add numbers, .
An example, add element at index 5,6,7 to element with index 1.
Code:
0 1 2 3 4 5 6 7 8 9 --- index
3,4,5,2,8,2,3,5,1,2 --- ints
View 6 Replies
View Related
Feb 23, 2015
I am trying to implement setjmp for functions.
Code:
#include <setjmp.h>
#include <stdio.h>
jmp_buf arr[3];
void DISP(int x , int i)
[Code]....
Could I possibly use malloc to allocate memory for the stack too?
View 1 Replies
View Related
Jun 11, 2013
I have to make a prgrama using the C programming language that is able to read several lines of commands entered by the user and interpret it as a command to run.
I have to implement the following command:
a) Command generic - program should be able to read any one command and execute the same command on the operating system through primitives for implementing generic processes (eg "ls-l/etc").
View 1 Replies
View Related
Feb 10, 2013
Code:
char str[40][40];
int number = 7;
for (int i=0;i<number;i++){
printf("enter %d th string::",i+1);
scanf("%s",str[i]);
}
Above, I have a little snippet of a code that I'm trying to figure out. I don't really understand how to implement 2d arrays in C that well. But, I mostly want to know is how and where the strings are being stored, especially with the code below.
Code:
for (int i=0;i<number;i++){
printf("enter %d th string::",i+1);
scanf("%s",str[i]);
}
I know that it's asking the user to enter strings, which will be stored into the 2d array. I just don't understand how it's being stored. Will it be placed in the 1st column or 2nd row or something?
View 1 Replies
View Related
Mar 25, 2013
I'm trying to implement the flocking algorithm in C++. I've tried to implement it myself by making all the particles 'home-in' on the player. When 2 particles then collide within their larger bounding boxes they home-in to each other. And when the 2 particles are actually touching they repel each other until they are outside of their bounding boxes and find another particle to home-into.when I run my application the particles all home into the player and come to a stand still along the Y-axis above the player.
All the particles in question are stored in a Vector, with a pos and velocity.
for(int i = 0; i < swarm.size(); i++) {
for (int j = 0; j < swarm.size(); j++) {
if (swarm.at(i)->getParticleModel()->getPosition().x < gameObjects.front()->getParticleModel()->getPosition().x) {
if (swarm.at(i)->getParticleModel()->getTouching() == false)
[code]....
View 5 Replies
View Related
Nov 2, 2014
I implement copy constructor for priority queue like this, is it right?
PRIORITY_QUEUE<T>::PRIORITY_QUEUE(const PRIORITY_QUEUE &aQueue)
{
this->maxSize = aQueue.maxSize;
this->items = new T [maxSize + 1];
this->rear = aQueue.rear;
for (int i = 0; i < aQueue.rear; i++)
[code]....
By the way, how to implement "insert" and "heapify" and in insert, when we insert an element we also heapify it?
View 2 Replies
View Related
Apr 15, 2014
Ok so i am coding in WPF i was coding just fine and im trying to implement a browserDialog
Here is the class
The issue i am having is in the DialogResult.Cancel This is the issue i receive 'System.Nullable<bool>' does not contain a definition for 'Cancel' and no extension method 'Cancel' accepting a first argument of type 'System.Nullable<bool>' could be found (are you missing a using directive or an assembly reference.
private void ArmaPathSelect_Click(object sender, RoutedEventArgs e)
{
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
if (folderBrowserDialog.ShowDialog() == DialogResult.Cancel)
return;
this.Path_Arma3.Text = folderBrowserDialog.SelectedPath;
}
View 1 Replies
View Related
Dec 12, 2013
I do this because I want to transform the .x format into xml... The "frame" data structure can contain other frames, and a name for the frame and a transformation. For example:
Code:
struct frame {
std::string name;
Matrix transform;
std::vector<struct frame> child;
std::vector<struct frame> sibling;
[Code] ....
I know the above won't compile. But am I on the right track to implement data structures this way using linked lists? about directx, I'd like to ask is the .x format implemented with a tree structure rather than linked lists.
View 1 Replies
View Related
Jan 5, 2014
Not inheriting properly and provide the corrected code if possible
Code:
#include <iostream>
using namespace std;
class Node {
protected:
int Data;
[Code] ....
View 4 Replies
View Related