SlideShare une entreprise Scribd logo
1  sur  15
Signals



© 2010 Anil Kumar Pugalia <email@sarika-pugs.com>
               All Rights Reserved.
What to Expect?
W's of a Signal
Signals in Linux
Signal Handlers
Signal related Functions
Program Exit Codes




        © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   2
                       All Rights Reserved.
Asynchronous Communication
In Kernel Space
  Interrupts (Hardware to Software)
  Soft Irqs (Software to Software)
What about User Space?
Moreover, between User Space & Kernel Space
Though only software to software requirement
Do System Calls take care of that?
Communication: Yes, but they are Synchronous
Asynchronous Solution is Signals
          © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   3
                         All Rights Reserved.
What is a Signal?
Asynchronous Trigger from Kernel Space or a Process to
another Process
Mechanisms for communicating with and manipulating
processes in Linux
Handled in User Space like Interrupts in Kernel Space
  Remains Pending on Masking. Once handled,
  Immediate processing without finishing the current function or
  even the current line of code. Possible options
    Ignore
    Execute the Default Handler
    Execute the User specified Handler



              © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>    4
                             All Rights Reserved.
Signals in Linux
Specified by a Number (currently 1-31)
Also, referred by Human readable Names
On Shell
  Type 'kill -l'
  Signal Operations: Using kill
In Programming / C
  Header: /usr/include/bits/signum.h
  Signal Operations: Shall discuss further
           © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   5
                          All Rights Reserved.
Signals Originate from
Kernel Space
 Typically on an illegal operation. Namely,
   SIGBUS (bus error),
   SIGSEGV (segmentation violation)
   SIGFPE (floating point exception)
 Others like SIGCHLD
A Process
 Synchronously using kill system call


        © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   6
                       All Rights Reserved.
Signal Handler Registration
Using signal(sig_no, handler)
  Non-portable except for SIG_DFL & SIG_IGN as handlers
Using sigaction(sig_no, action, old_action)
  action & new_action are pointers to sigaction structures
  action contains the desired disposition
  old_action receives the previous disposition
  Their sa_handler field takes one of the three values
    SIG_DFL
    SIG_IGN
    A pointer to a signal handler function
Signal Hanlder Prototype
  void signal_handler(int sig_no);
Exceptions to Registration: SIGKILL, SIGSTOP
                © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   7
                               All Rights Reserved.
Sensitivity of Signal Handlers
Time Sensitive like Interrupt Handlers
Perform the minimum work necessary &
  Return control to the main program, Or
  Terminate the program
Mostly, they just record the signal
occurrence
  And the main program does the processing



         © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   8
                        All Rights Reserved.
Signal in a Signal
Signal interrupting a signal handler
  Rare Occurrence but could be a Problem
  Difficult to diagnose & debug
  Assigning to globals can be dangerous
Solutions
  Self is restricted by default
    Unless SA_NODEFER flag is used
  Disable other signals in signal handlers
    By setting sa_mask using sigsetops during registration
  Protect the global variables by using sig_atomic_t type

            © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   9
                           All Rights Reserved.
Signal related Functions
raise
  Sends a signal to calling thread
kill, killpg
  Sends a signal to a specified process or group of processes
tkill, tgkill, pthread_kill
  Sends a signal to a specified thread
sigqueue
  Sends a real-time signal with accompanying data to a specified process
pause, sigsuspend
  Suspends the calling thread until delivery of a signal whose action is
  either to execute a signal handler or to terminate the process
sigwaitinfo, sigtimedwait, sigwait, signalfd
  Accepts signals synchronously
                © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>          10
                               All Rights Reserved.
Signal related Functions ...
alarm(unsigned int secs);
  Schedules an alarm signal (SIGALRM) to be
  sent to the calling process after “secs”
  seconds
  Should not be mixed with setitimer / sleep
abort();
  Causes abnormal process termination by
  raising abort signal (SIGABRT)


           © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   11
                          All Rights Reserved.
Process Termination Revisited
Normal: System Call 'exit' is invoked
  With zero – Success Exit
  With non-zero value – Error Exit
Abnormal: A Signal has terminated it
  From Kernel Space for a Bug – Fatal Exit
    SIGBUS
    SIGSEGV
    SIGFPE
  From a Process – Kill Exit
    SIGINT (Ctrl + C)
    SIGTERM
    SIGABRT / abort()
    ...
              © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   12
                             All Rights Reserved.
Exit Codes Decoded
8-bit unsigned integer
Range: 0-255
Normal Termination (using exit(value);)
  “value” should be always between 0 and 127
  Exit code is “value”
Abnormal Termination (by signal)
  Exit code is 128 + “signal”


         © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   13
                        All Rights Reserved.
What all have we learnt?
W's of a Signal
Signals in Linux
Signal Handlers
Signal related Functions
Program Exit Codes




        © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   14
                       All Rights Reserved.
Any Queries?




© 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   15
               All Rights Reserved.

Contenu connexe

Tendances

Mobile Hacking using Linux Drivers
Mobile Hacking using Linux DriversMobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
Anil Kumar Pugalia
 
Linux User Space Debugging & Profiling
Linux User Space Debugging & ProfilingLinux User Space Debugging & Profiling
Linux User Space Debugging & Profiling
Anil Kumar Pugalia
 

Tendances (20)

Kernel Debugging & Profiling
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & Profiling
 
Architecture Porting
Architecture PortingArchitecture Porting
Architecture Porting
 
Interrupts
InterruptsInterrupts
Interrupts
 
Linux DMA Engine
Linux DMA EngineLinux DMA Engine
Linux DMA Engine
 
Kernel Timing Management
Kernel Timing ManagementKernel Timing Management
Kernel Timing Management
 
Introduction to Linux
Introduction to LinuxIntroduction to Linux
Introduction to Linux
 
Embedded Storage Management
Embedded Storage ManagementEmbedded Storage Management
Embedded Storage Management
 
POSIX Threads
POSIX ThreadsPOSIX Threads
POSIX Threads
 
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux DriversMobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
 
Embedded C
Embedded CEmbedded C
Embedded C
 
Synchronization
SynchronizationSynchronization
Synchronization
 
Embedded Software Design
Embedded Software DesignEmbedded Software Design
Embedded Software Design
 
Introduction to Linux
Introduction to LinuxIntroduction to Linux
Introduction to Linux
 
BeagleBoard-xM Booting Process
BeagleBoard-xM Booting ProcessBeagleBoard-xM Booting Process
BeagleBoard-xM Booting Process
 
Kernel Programming
Kernel ProgrammingKernel Programming
Kernel Programming
 
Linux User Space Debugging & Profiling
Linux User Space Debugging & ProfilingLinux User Space Debugging & Profiling
Linux User Space Debugging & Profiling
 
Video Drivers
Video DriversVideo Drivers
Video Drivers
 
Threads
ThreadsThreads
Threads
 
SPI Drivers
SPI DriversSPI Drivers
SPI Drivers
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 

En vedette (16)

System Calls
System CallsSystem Calls
System Calls
 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
 
Network Drivers
Network DriversNetwork Drivers
Network Drivers
 
References
ReferencesReferences
References
 
Character Drivers
Character DriversCharacter Drivers
Character Drivers
 
Board Bringup
Board BringupBoard Bringup
Board Bringup
 
Bootloaders
BootloadersBootloaders
Bootloaders
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 
Functional Programming with LISP
Functional Programming with LISPFunctional Programming with LISP
Functional Programming with LISP
 
gcc and friends
gcc and friendsgcc and friends
gcc and friends
 
Linux File System
Linux File SystemLinux File System
Linux File System
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory Management
 
PCI Drivers
PCI DriversPCI Drivers
PCI Drivers
 
File Systems
File SystemsFile Systems
File Systems
 
BeagleBoard-xM Bootloaders
BeagleBoard-xM BootloadersBeagleBoard-xM Bootloaders
BeagleBoard-xM Bootloaders
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 

Similaire à Signals

AOS Chapter 6 for internal.docx
AOS Chapter 6 for internal.docxAOS Chapter 6 for internal.docx
AOS Chapter 6 for internal.docx
KomlikaTaru
 
Routeco cyber security and secure remote access 1 01
Routeco cyber security and secure remote access 1 01Routeco cyber security and secure remote access 1 01
Routeco cyber security and secure remote access 1 01
RoutecoMarketing
 
Wireless stepper motor control using zigbee
Wireless stepper motor control  using zigbeeWireless stepper motor control  using zigbee
Wireless stepper motor control using zigbee
savan Darji
 

Similaire à Signals (20)

Signal Handling in Linux
Signal Handling in LinuxSignal Handling in Linux
Signal Handling in Linux
 
Usp notes unit6-8
Usp notes unit6-8Usp notes unit6-8
Usp notes unit6-8
 
AOS Chapter 6 for internal.docx
AOS Chapter 6 for internal.docxAOS Chapter 6 for internal.docx
AOS Chapter 6 for internal.docx
 
SOGNAL DAEMON AND PROCESSING CRYPTOGRAPHY NOTES
SOGNAL DAEMON AND PROCESSING CRYPTOGRAPHY NOTESSOGNAL DAEMON AND PROCESSING CRYPTOGRAPHY NOTES
SOGNAL DAEMON AND PROCESSING CRYPTOGRAPHY NOTES
 
Unixppt (1) (1).pptx
Unixppt (1) (1).pptxUnixppt (1) (1).pptx
Unixppt (1) (1).pptx
 
Course 102: Lecture 19: Using Signals
Course 102: Lecture 19: Using Signals Course 102: Lecture 19: Using Signals
Course 102: Lecture 19: Using Signals
 
07 Systems Software Programming-IPC-Signals.pptx
07 Systems Software Programming-IPC-Signals.pptx07 Systems Software Programming-IPC-Signals.pptx
07 Systems Software Programming-IPC-Signals.pptx
 
System Programming Assignment Help- Signals
System Programming Assignment Help- SignalsSystem Programming Assignment Help- Signals
System Programming Assignment Help- Signals
 
اسلاید ارائه دوم جلسه ۱۰ کلاس پایتون برای هکر های قانونی
اسلاید ارائه دوم جلسه ۱۰ کلاس پایتون برای هکر های قانونی اسلاید ارائه دوم جلسه ۱۰ کلاس پایتون برای هکر های قانونی
اسلاید ارائه دوم جلسه ۱۰ کلاس پایتون برای هکر های قانونی
 
PRESENTATION ON PLC AND SCADA
PRESENTATION ON PLC AND SCADAPRESENTATION ON PLC AND SCADA
PRESENTATION ON PLC AND SCADA
 
DEVENDRAPLC .pptx
DEVENDRAPLC .pptxDEVENDRAPLC .pptx
DEVENDRAPLC .pptx
 
DIGITAL SIGNAL PROCESSOR OVERVIEW
DIGITAL SIGNAL PROCESSOR OVERVIEWDIGITAL SIGNAL PROCESSOR OVERVIEW
DIGITAL SIGNAL PROCESSOR OVERVIEW
 
PPT of PLC and SCADA
PPT of PLC and SCADAPPT of PLC and SCADA
PPT of PLC and SCADA
 
AWS Loft Talk: Behind the Scenes with SignalFx
AWS Loft Talk: Behind the Scenes with SignalFxAWS Loft Talk: Behind the Scenes with SignalFx
AWS Loft Talk: Behind the Scenes with SignalFx
 
Erlang real time
Erlang real timeErlang real time
Erlang real time
 
No liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failureNo liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failure
 
Unix presentation.pdf
Unix presentation.pdfUnix presentation.pdf
Unix presentation.pdf
 
Routeco cyber security and secure remote access 1 01
Routeco cyber security and secure remote access 1 01Routeco cyber security and secure remote access 1 01
Routeco cyber security and secure remote access 1 01
 
Biometric Access and Attendance Terminal
Biometric Access and Attendance TerminalBiometric Access and Attendance Terminal
Biometric Access and Attendance Terminal
 
Wireless stepper motor control using zigbee
Wireless stepper motor control  using zigbeeWireless stepper motor control  using zigbee
Wireless stepper motor control using zigbee
 

Plus de Anil Kumar Pugalia (9)

File System Modules
File System ModulesFile System Modules
File System Modules
 
Processes
ProcessesProcesses
Processes
 
System Calls
System CallsSystem Calls
System Calls
 
Playing with R L C Circuits
Playing with R L C CircuitsPlaying with R L C Circuits
Playing with R L C Circuits
 
Audio Drivers
Audio DriversAudio Drivers
Audio Drivers
 
Power of vi
Power of viPower of vi
Power of vi
 
"make" system
"make" system"make" system
"make" system
 
Hardware Design for Software Hackers
Hardware Design for Software HackersHardware Design for Software Hackers
Hardware Design for Software Hackers
 
RPM Building
RPM BuildingRPM Building
RPM Building
 

Dernier

Dernier (20)

A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

Signals

  • 1. Signals © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> All Rights Reserved.
  • 2. What to Expect? W's of a Signal Signals in Linux Signal Handlers Signal related Functions Program Exit Codes © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 2 All Rights Reserved.
  • 3. Asynchronous Communication In Kernel Space Interrupts (Hardware to Software) Soft Irqs (Software to Software) What about User Space? Moreover, between User Space & Kernel Space Though only software to software requirement Do System Calls take care of that? Communication: Yes, but they are Synchronous Asynchronous Solution is Signals © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 3 All Rights Reserved.
  • 4. What is a Signal? Asynchronous Trigger from Kernel Space or a Process to another Process Mechanisms for communicating with and manipulating processes in Linux Handled in User Space like Interrupts in Kernel Space Remains Pending on Masking. Once handled, Immediate processing without finishing the current function or even the current line of code. Possible options Ignore Execute the Default Handler Execute the User specified Handler © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 4 All Rights Reserved.
  • 5. Signals in Linux Specified by a Number (currently 1-31) Also, referred by Human readable Names On Shell Type 'kill -l' Signal Operations: Using kill In Programming / C Header: /usr/include/bits/signum.h Signal Operations: Shall discuss further © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 5 All Rights Reserved.
  • 6. Signals Originate from Kernel Space Typically on an illegal operation. Namely, SIGBUS (bus error), SIGSEGV (segmentation violation) SIGFPE (floating point exception) Others like SIGCHLD A Process Synchronously using kill system call © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 6 All Rights Reserved.
  • 7. Signal Handler Registration Using signal(sig_no, handler) Non-portable except for SIG_DFL & SIG_IGN as handlers Using sigaction(sig_no, action, old_action) action & new_action are pointers to sigaction structures action contains the desired disposition old_action receives the previous disposition Their sa_handler field takes one of the three values SIG_DFL SIG_IGN A pointer to a signal handler function Signal Hanlder Prototype void signal_handler(int sig_no); Exceptions to Registration: SIGKILL, SIGSTOP © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 7 All Rights Reserved.
  • 8. Sensitivity of Signal Handlers Time Sensitive like Interrupt Handlers Perform the minimum work necessary & Return control to the main program, Or Terminate the program Mostly, they just record the signal occurrence And the main program does the processing © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 8 All Rights Reserved.
  • 9. Signal in a Signal Signal interrupting a signal handler Rare Occurrence but could be a Problem Difficult to diagnose & debug Assigning to globals can be dangerous Solutions Self is restricted by default Unless SA_NODEFER flag is used Disable other signals in signal handlers By setting sa_mask using sigsetops during registration Protect the global variables by using sig_atomic_t type © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 9 All Rights Reserved.
  • 10. Signal related Functions raise Sends a signal to calling thread kill, killpg Sends a signal to a specified process or group of processes tkill, tgkill, pthread_kill Sends a signal to a specified thread sigqueue Sends a real-time signal with accompanying data to a specified process pause, sigsuspend Suspends the calling thread until delivery of a signal whose action is either to execute a signal handler or to terminate the process sigwaitinfo, sigtimedwait, sigwait, signalfd Accepts signals synchronously © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 10 All Rights Reserved.
  • 11. Signal related Functions ... alarm(unsigned int secs); Schedules an alarm signal (SIGALRM) to be sent to the calling process after “secs” seconds Should not be mixed with setitimer / sleep abort(); Causes abnormal process termination by raising abort signal (SIGABRT) © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 11 All Rights Reserved.
  • 12. Process Termination Revisited Normal: System Call 'exit' is invoked With zero – Success Exit With non-zero value – Error Exit Abnormal: A Signal has terminated it From Kernel Space for a Bug – Fatal Exit SIGBUS SIGSEGV SIGFPE From a Process – Kill Exit SIGINT (Ctrl + C) SIGTERM SIGABRT / abort() ... © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 12 All Rights Reserved.
  • 13. Exit Codes Decoded 8-bit unsigned integer Range: 0-255 Normal Termination (using exit(value);) “value” should be always between 0 and 127 Exit code is “value” Abnormal Termination (by signal) Exit code is 128 + “signal” © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 13 All Rights Reserved.
  • 14. What all have we learnt? W's of a Signal Signals in Linux Signal Handlers Signal related Functions Program Exit Codes © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 14 All Rights Reserved.
  • 15. Any Queries? © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 15 All Rights Reserved.