Sunday, April 27, 2014

Producer Consumer Program Source Code C

Producer Consumer Program Source Code C 

Header.h ex1:

#include<stdio.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<sys/shm.h>
#include<sys/types.h>
#include<sys/stat.h>
#define N 5
#define n1 3

#define MUTEX 1
#define FULL 0
#define EMPTY 5

#define SHM_KEY 502
#define SHM_KEY1 909
#define SEM_KEY 703


Common to pro & cons


int semId,shmId;
union semun
{
  int val;
                    struct semid_ds *buf;
                    unsigned short *array;
};
  
void wait(int semNo)
{
  struct sembuf s;
  s.sem_num=semNo;
  s.sem_op=-1;
  s.sem_flg=SEM_UNDO;
  int r=semop(semId,&s,1);
  if(r==-1)
  {
      perror("ERROR: Semop()");                   exit(1);
  }
}

void signal(int semNo)
{
  struct sembuf s;
  s.sem_num=semNo;
  s.sem_op=1;
  s.sem_flg=SEM_UNDO;
  int r=semop(semId,&s,1);
  if(r==-1)
  {
    perror("ERROR: Semop()");      exit(1);
  }
}


Producer:                                                                                          

int initialize(int semNo,int value)
{
  union semun u;
  u.val=value;
  int r=semctl(semId,semNo,SETVAL,u);
  if(r==-1)
  {
    perror("ERROR: Semctl()");
    exit(1);
  }
}
int main()
{
                    int *buffer,in=0,x=0,i;
                    struct shmid_ds *data;
   shmId=shmget(SHM_KEY,N*sizeof(int),0777|IPC_CREAT);
   semId=semget(SEM_KEY,3,0777|IPC_CREAT);
  if(shmId==-1)
                    {
                    perror("ERROR: shmget()"); exit(0);
                    }
                     if(semId==-1)
  {
    perror("ERROR: shmget()"); exit(0);
  }
  buffer=(int*)shmat(shmId,0,0777);
  if(buffer==-1)
  {
    perror("ERROR: shmat()"); exit(0);
  }
initialize(MUTEX,1); initialize(FULL,0); initialize(EMPTY,5);
    printf("Produced elements are");
                    for(i=0;i<20;i++)
                    {
                    if(in<5)
                    {
                                        x+=1;
                 wait(EMPTY);  wait(MUTEX);
                 buffer[in]=x;   printf("\n%d",x);
                 signal(MUTEX);   signal(FULL);
                 in=(in+1)%N;  sleep(1); 
}  
}

Consumer 

int main()
{
  int *buffer,out=0,x,i;
  int output;
 
   struct shmid_ds *data;
 
 shmId=shmget(SHM_KEY,N*sizeof(int),0777|IPC_CREAT);
  semId=semget(SEM_KEY,3,0777|IPC_CREAT);

 if(shmId==-1)
  {
    perror("ERROR: shmget()");
    exit(0);
  }
   if(semId==-1)
  {
    perror("ERROR: shmget()");
    exit(0);
  }
  buffer=(int*)shmat(shmId,0,0777);
  if(buffer==-1)
  {
    perror("ERROR: shmat()");
    exit(0);
  }

  for(i=0;i<20;i++)
   {
   if(out<5)
                                        {
                                        wait(FULL);
                                        wait(MUTEX);
                                       
output= buffer[out];
                    printf("\nConsumed %d",output);
                    signal(MUTEX);
                    signal(EMPTY);
                    out=(out+1)%N;
                                        }
  }
}

Simple Calculator Android Project Eclipse Download Source Code

Simple Calculator Android Project Eclipse Download  Source Code


                                      here is an android application for calculation wich can do addition, Subtraction,Multiplication and Division 

the eclipse project can be downloaded from the below link : 

link : https://drive.google.com/file/d/0B2HmQFsBTVGfQzdoeldfam55b2s/edit?usp=sharing


MainActivity.java

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity 
{

Button add_button,sub_button,mul_button,div_button,clear_button;
EditText first_num,second_num;
TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
first_num=(EditText) findViewById(R.id.num1);
second_num=(EditText) findViewById(R.id.num2);
result=(TextView) findViewById(R.id.result);
add_button=(Button) findViewById(R.id.add);
sub_button=(Button) findViewById(R.id.sub);
mul_button=(Button) findViewById(R.id.mul);
div_button=(Button) findViewById(R.id.div);
clear_button=(Button) findViewById(R.id.clear);
add_button.setOnClickListener(new Addition());
sub_button.setOnClickListener(new Subtraction());
mul_button.setOnClickListener(new Multiply());
div_button.setOnClickListener(new Division());
clear_button.setOnClickListener(new Clear());
}
class Addition implements Button.OnClickListener
{

@Override
public void onClick(View arg0) 
{
// TODO Auto-generated method stub
String a,b;
Integer finalValue;
a=first_num.getText().toString();
b=second_num.getText().toString();
finalValue=Integer.parseInt(a)+Integer.parseInt(b);
result.setText(finalValue.toString());
}
}
class Subtraction implements Button.OnClickListener
{

@Override
public void onClick(View arg0) 
{
// TODO Auto-generated method stub
String a,b;
Integer finalValue;
a=first_num.getText().toString();
b=second_num.getText().toString();
finalValue=Integer.parseInt(a)-Integer.parseInt(b);
result.setText(finalValue.toString());
}
}
class Multiply implements Button.OnClickListener
{

@Override
public void onClick(View arg0) 
{
// TODO Auto-generated method stub
String a,b;
Integer finalValue;
a=first_num.getText().toString();
b=second_num.getText().toString();
finalValue=Integer.parseInt(a)*Integer.parseInt(b);
result.setText(finalValue.toString());
}
}
class Division implements Button.OnClickListener
{

@Override
public void onClick(View arg0) 
{
// TODO Auto-generated method stub
String a,b;
Integer finalValue;
a=first_num.getText().toString();
b=second_num.getText().toString();
finalValue=Integer.parseInt(a)/Integer.parseInt(b);
result.setText(finalValue.toString());
}
}
class Clear implements Button.OnClickListener
{

@Override
public void onClick(View arg0) 
{
// TODO Auto-generated method stub
first_num.setText("");
second_num.setText("");
result.setText("");
}
}
}




fragment_mail.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enter Number 1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/num1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enter Number 2"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/num2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Result"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add" />

    <Button
        android:id="@+id/sub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sub" />

    <Button
        android:id="@+id/mul"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Mul" />

    <Button
        android:id="@+id/div"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Div" />

    <Button
        android:id="@+id/clear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Clear" />

</LinearLayout>