The Experience of Linux Driver Verification
|
|
|
- Todd Walters
- 9 years ago
- Views:
Transcription
1 Schloss Dagstuhl 25 April 2014 The Experience of Linux Driver Verification Alexey Khoroshilov Vadim Mutilin Institute for System Programming of the Russian Academy of Sciences
2 Linux Verification Center founded in 2005 User Space Verification Application Binary/Program Interface Stability Linux Driver Verification Program Linux File System Verification Deductive Verification
3 Software Model Checking Reachability problem entry point error location
4 Verification Tools World int main(int argc,char* argv[]) {... other_func(var); void other_func(int v) { } assert( x!= NULL); }
5 Device Driver World int usbpn_open(struct net_device *dev) {... }; int usbpn_close(struct net_device *dev) {... }; struct net_device_ops usbpn_ops = {.ndo_open = usbpn_open,.ndo_stop = usbpn_close }; int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id){ dev->netdev_ops = &usbpn_ops; err = register_netdev(dev); } void usbpn_disconnect(struct usb_interface *intf){...} struct usb_driver usbpn_struct = {.probe = usbpn_probe,.disconnect = usbpn_disconnect, }; int init usbpn_init(void){ return usb_register(&usbpn_struct);} void exit usbpn_exit(void){usb_deregister(&usbpn_struct );} module_init(usbpn_init); module_exit(usbpn_exit); No explicit calls to init/exit procedures
6 Device Driver World int usbpn_open(struct net_device *dev) {... }; int usbpn_close(struct net_device *dev) {... }; struct net_device_ops usbpn_ops = {.ndo_open = usbpn_open,.ndo_stop = usbpn_close }; int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id){ dev->netdev_ops = &usbpn_ops; err = register_netdev(dev); Callback interface } procedures registration void usbpn_disconnect(struct usb_interface *intf){...} struct usb_driver usbpn_struct = {.probe = usbpn_probe,.disconnect = usbpn_disconnect, }; int init usbpn_init(void){ return usb_register(&usbpn_struct);} void exit usbpn_exit(void){usb_deregister(&usbpn_struct );} module_init(usbpn_init); module_exit(usbpn_exit); No explicit calls to init/exit procedures
7 Device Driver World int usbpn_open(struct net_device *dev) {... }; int usbpn_close(struct net_device *dev) {... }; struct net_device_ops usbpn_ops = {.ndo_open = usbpn_open,.ndo_stop = usbpn_close }; int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *id){ dev->netdev_ops = &usbpn_ops; err = register_netdev(dev); Callback interface } procedures registration void usbpn_disconnect(struct usb_interface *intf){...} struct usb_driver usbpn_struct = {.probe = usbpn_probe,.disconnect = usbpn_disconnect, }; int init usbpn_init(void){ return usb_register(&usbpn_struct);} void exit usbpn_exit(void){usb_deregister(&usbpn_struct );} module_init(usbpn_init); module_exit(usbpn_exit); No explicit calls to init/exit procedures
8 Driver Environment Model int main(int argc,char* argv[]) { usbpn_init() for(;;) { switch(*) { case 0: usbpn_probe(*,*,*);break; case 1: usbpn_open(*,*);break;... } } usbpn_exit(); }
9 Driver Environment Model (2) Order limitation open() after probe(), but before remove() Implicit limitations read() only if open() succeed and it is specific for each class of drivers
10 Scenarios of Handler Invocations usbpn_init: return usb_register(&usbpn_struct); usbpn_struct->probe: dev = alloc_netdev(...); usbpn_struct->disconnect: free_netdev(dev); usbpn_exit: return usb_deregister(&usbpn_struct);
11 Scenarios of Several Groups init probe ndo_open ndo_start_xmit ndo_stop net_device_ops disconnect exit usb_driver
12 Driver Environment Model (3) Correct & Complete should reproduce the same scenarios of interaction with a driver as in the real kernel environment
13 Driver Environment Model (3) Correct & Complete should reproduce the same scenarios of interaction with a driver as in the real kernel environment Simple Enough should satisfy the requirements of static verification tools
14 π-model of Environment
15 π-model of Environment
16 Modeling Driver Environment
17 Generated Environment in C void main(int argc, char* argv[]) { while(true) { switch( VERIFIER_nondet_int()) { case 0: //process P1, action α1: if(s->state == K ) {... } break; case 1: //process P1, action α2:... } } break_loop: }
18 Model Checking and Linux Kernel Reachability problem entry point DONE error location
19 Error Location? int f(int y) { struct urb *x; x = usb_alloc_urb(0,gfp_kernel);... usb_free_urb(x); return y; }
20 Error Location? int f(int y) { struct urb *x; x = usb_alloc_urb(0,gfp_kernel); // allocate new URB... usb_free_urb(x); // deallocate URB: assert(x is NULL or previously allocated URB) return y; } // after module exit: assert( all allocated URBs are deallocated)
21 Instrumentation set URBS = empty; int f(int y) { struct urb *x; int f(int y) { struct urb *x; x = usb_alloc_urb(0,gfp_kernel); x = usb_alloc_urb(); add(urbs, urb);... assert(contains(urbs, x)); usb_free_urb(x); remove(urbs, urb);... usb_free_urb(x); return y; } return y; } // after module exit assert(is_empty(urbs));
22 Aspect-Oriented Notation // Model state: set of allocated URBs set URBS = empty; // Model functions struct urn * ldv_usb_alloc_urb(void) { void *urb; urb = ldv_alloc(); if (urb) { add(urbs, urb); } return urb; } void ldv_usb_free_urb(struct urb *urb) { if (urb) { remove(urbs, urb); } } // Pointcut declarations pointcut USB_ALLOC_URB: call(struct urb *usb_alloc_urb(int, gfp_t)); pointcut USB_FREE_URB: call(void usb_free_urb(struct urb *)); // Update model state around: USB_ALLOC_URB { return ldv_usb_alloc_urb(); } around: USB_FREE_URB { ldv_usb_free_urb($arg1); } // Assertions before: USB_FREE_URB { assert(contains(urbs, $arg1)); } after: MODULE_EXIT { assert(is_empty(urbs)); }
23 Instrumentation int f(int y) { struct urb *x; int f(int y) { struct urb *x; x = usb_alloc_urb(0,gfp_kernel);... usb_free_urb(x); x = ldv_usb_alloc_urb();... assert(contains(urbs, x)); ldv_usb_free_urb(x); return y; } return y; } // after module exit assert(is_empty(urbs));
24 Rule Instrumentor CIF C Instrumentation Framework gcc-based aspect-oriented programming tool for C language available under GPLv3:
25 Model Checking and Linux Kernel Reachability problem entry point DONE error location DONE
26 Linux Driver Verification
27 Cmd Stream C Program CC Command-set compiler options (including defines) source files LD Command linker options object files
28 Cmd Stream (2) CmdStream file1.c file2.c Transformation Tool CmdStream-upd file1-upd.c
29 Linux Driver Verification
30 LDV-Core: Build Cmd Extractor extract CmdStream from original build process divide CmdStream into small parts per kernel module
31 Linux Driver Verification End of Linux drivers specific
32 Error Traces in Common Format Get dependencies BLAST error trace CPAchecker error trace LDV error traces converter Error trace in the common format Compare Visualize
33 Error Traces in Common Format (2) [LINE] [FILE] [TYPE] [KIND] [TEXT] Flexible Extensible Easy enough to convert to Easy to process 185 N64-{func()}->N67 14 «a.c» CALL : func()
34 Error Traces in Common Format (3) Line 18919: Line 23193: Line 23198: Line 23203: Line 23088: Line 23092: Line 23094: N8417 -{mutex_lock( cil_tmp18)}-> N10754 N {Function start dummy edge}-> N10755 N {[!((ldv_mutex) == (1))]}-> N10758 N {ldv_blast_assert()}-> N10704 N {Function start dummy edge}-> N10705 N {Label: LDV_ERROR}-> N10706 N {Goto: LDV_ERROR}-> N CALL : mutex_lock( cil_tmp18) 108 "model0032.c" ASSUME :!((ldv_mutex) == (1)) 108 CALL : ldv_blast_assert() 9 "assert.h" BLOCK : LDV_ERROR: 6 BLOCK : goto LDV_ERROR;
35 Linux Driver Verification
36 Demo
37 BLAST CPAchecker +2 Correct -1 Incorrect -12 Was correct +10 Correct Different bugs! Total known unsafes 65 BLAST 53 CPAcheker 53
38 Bugs Found >150 patches already applied
39 Lessons Learnt
40 Lessons Learnt Language features support gcc extensions, e.g. zero-length arrays struct line { int length; char contents[0]; }; etc.
41 Lessons Learnt Language features support No premature UNKNOWN Error: Unsupported C feature (recursion) in line 60858: tmp = gma_power_begin( tmp24, tmp25); (CallstackTransferRelation.getAbstractSuccessors) Bug Finder vs. Safe Prover
42 Lessons Learnt Language features support No premature UNKNOWN Efficiently ignore irrelevant details Ten of thousands irrelevant transitions vs. dozens of relevant ones
43 Lessons Learnt Language features support No premature UNKNOWN Efficiently ignore irrelevant details Engineering Matters
44 BLAST Berkeley Lazy Abstraction Software Verification Tool BLAST is a software model checker for C programs. It uses counterexample-driven automatic abstraction refinement to construct an abstract model which is model checked for safety properties.
45 ISPRAS BLAST 2.6 Release Notes Speedup ranges from 8 times on small-sized programs to 30 times on medium-sized programs Logarithmic algorithm for useful-blocks (significantly speedup of trace analysis) Improved integration with SMT solvers efficient string concatenation caching of converted formulae optimization of CVC3 options for BLAST use cases Formulae normalization moved to solvers since solvers do it faster Alias analysis speedup must-aliases are handled separately and faster than may-aliases removed unnecessary debug prints from alias iteration (even a check for debug flag impacts performance significantly in hot places) BLAST-specific tuning of OCaml virtual machine options
46 SVCOMP'12 Results
47 SVCOMP'14 Results
48 Lessons Learnt Language features support No premature UNKNOWN Efficiently ignore irrelevant details Engineering Matters
49 Competition Consideration
50 Competition Consideration Bug Finder vs. Safe Prover
51 Competition Consideration Bug Finder vs. Safe Prover Benchmarks Future, not Status Quo
52 Competition Consideration Bug Finder vs. Safe Prover Benchmarks Future, not Status Quo Pointers, Sets, Maps, not Integers Parallel (?) Function Pointers (?)
53 Competition Consideration Bug Finder vs. Safe Prover Benchmarks Future, not Status Quo Pointers, Sets, Maps, not Integers Parallel (?) Function Pointers (?) Error traces
54 Competition Consideration Bug Finder vs. Safe Prover Benchmarks Future, not Status Quo Pointers, Sets, Maps, not Integers Parallel (?) Function Pointers (?) Error traces Wall time matters
55 Thank you! Alexey Khoroshilov Vadim Mutilin Institute for System Programming of the Russian Academy of Sciences
Common Errors in C/C++ Code and Static Analysis
Common Errors in C/C++ Code and Static Analysis Red Hat Ondřej Vašík and Kamil Dudka 2011-02-17 Abstract Overview of common programming mistakes in the C/C++ code, and comparison of a few available static
CSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
3 - Lift with Monitors
3 - Lift with Monitors TSEA81 - Computer Engineering and Real-time Systems This document is released - 2015-11-24 version 1.4 Author - Ola Dahl, Andreas Ehliar Assignment - 3 - Lift with Monitors Introduction
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
Regression Verification: Status Report
Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software
REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux. Lesson-12: Real Time Linux
REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux Lesson-12: Real Time Linux 1 1. Real Time Linux 2 Linux 2.6.x Linux is after Linus Torvalds, father of the Linux operating
GDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial
A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program
MPLAB Harmony System Service Libraries Help
MPLAB Harmony System Service Libraries Help MPLAB Harmony Integrated Software Framework v1.08 All rights reserved. This section provides descriptions of the System Service libraries that are available
Textbook: T. Issariyakul and E. Hossain, Introduction to Network Simulator NS2, Springer 2008. 1
Event Driven Simulation in NS2 Textbook: T. Issariyakul and E. Hossain, Introduction to Network Simulator NS2, Springer 2008. 1 Outline Recap: Discrete Event v.s. Time Driven Events and Handlers The Scheduler
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
Libmonitor: A Tool for First-Party Monitoring
Libmonitor: A Tool for First-Party Monitoring Mark W. Krentel Dept. of Computer Science Rice University 6100 Main St., Houston, TX 77005 [email protected] ABSTRACT Libmonitor is a library that provides
SQLITE C/C++ TUTORIAL
http://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm SQLITE C/C++ TUTORIAL Copyright tutorialspoint.com Installation Before we start using SQLite in our C/C++ programs, we need to make sure that we have
Tail call elimination. Michel Schinz
Tail call elimination Michel Schinz Tail calls and their elimination Loops in functional languages Several functional programming languages do not have an explicit looping statement. Instead, programmers
Parallelization: Binary Tree Traversal
By Aaron Weeden and Patrick Royal Shodor Education Foundation, Inc. August 2012 Introduction: According to Moore s law, the number of transistors on a computer chip doubles roughly every two years. First
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
Advanced Scripting Techniques for Automating Regression Tests and Measurements with the Code Composer Studio Scripting Utility
01001000100000110000001000001100 010010001000 Advanced Scripting Techniques for Automating Regression Tests and Measurements with the Code Composer Studio Scripting Utility Name: Vincent Wan, Ki-Soo Lee
IVI Configuration Store
Agilent Developer Network White Paper Stephen J. Greer Agilent Technologies, Inc. The holds information about IVI drivers installed on the computer and configuration information for an instrument system.
Kernel Intrusion Detection System
Kernel Intrusion Detection System Rodrigo Rubira Branco [email protected] [email protected] Monica's Team!! Brazilian famous H.Q. story Amazon Forest Yeah, Brazilian country! Soccer Brazilian
How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
First Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science
First Java Programs V. Paúl Pauca Department of Computer Science Wake Forest University CSC 111D Fall, 2015 Hello World revisited / 8/23/15 The f i r s t o b l i g a t o r y Java program @author Paul Pauca
Overview. Lecture 1: an introduction to CUDA. Hardware view. Hardware view. hardware view software view CUDA programming
Overview Lecture 1: an introduction to CUDA Mike Giles [email protected] hardware view software view Oxford University Mathematical Institute Oxford e-research Centre Lecture 1 p. 1 Lecture 1 p.
CORBA Programming with TAOX11. The C++11 CORBA Implementation
CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy
C Programming Review & Productivity Tools
Review & Productivity Tools Giovanni Agosta Piattaforme Software per la Rete Modulo 2 Outline Preliminaries 1 Preliminaries 2 Function Pointers Variadic Functions 3 Build Automation Code Versioning 4 Preliminaries
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
Jorix kernel: real-time scheduling
Jorix kernel: real-time scheduling Joris Huizer Kwie Min Wong May 16, 2007 1 Introduction As a specialized part of the kernel, we implemented two real-time scheduling algorithms: RM (rate monotonic) and
Shared Memory Segments and POSIX Semaphores 1
Shared Memory Segments and POSIX Semaphores 1 Alex Delis delis -at+ pitt.edu October 2012 1 Acknowledgements to Prof. T. Stamatopoulos, M. Avidor, Prof. A. Deligiannakis, S. Evangelatos, Dr. V. Kanitkar
Elemental functions: Writing data-parallel code in C/C++ using Intel Cilk Plus
Elemental functions: Writing data-parallel code in C/C++ using Intel Cilk Plus A simple C/C++ language extension construct for data parallel operations Robert Geva [email protected] Introduction Intel
How To Understand How A Process Works In Unix (Shell) (Shell Shell) (Program) (Unix) (For A Non-Program) And (Shell).Orgode) (Powerpoint) (Permanent) (Processes
Content Introduction and History File I/O The File System Shell Programming Standard Unix Files and Configuration Processes Programs are instruction sets stored on a permanent medium (e.g. harddisc). Processes
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
Sources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
CSI 402 Lecture 13 (Unix Process Related System Calls) 13 1 / 17
CSI 402 Lecture 13 (Unix Process Related System Calls) 13 1 / 17 System Calls for Processes Ref: Process: Chapter 5 of [HGS]. A program in execution. Several processes are executed concurrently by the
Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification
Introduction Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification Advanced Topics in Software Engineering 1 Concurrent Programs Characterized by
El Dorado Union High School District Educational Services
El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.
Partitioning under the hood in MySQL 5.5
Partitioning under the hood in MySQL 5.5 Mattias Jonsson, Partitioning developer Mikael Ronström, Partitioning author Who are we? Mikael is a founder of the technology behind NDB
Iron Chef: John Henry Challenge
Iron Chef: John Henry Challenge Brian Chess Pravir Chandra Black Hat 3/27/2008 Amsterdam Sean Fay Jacob West Concept We love Iron Chef. We can t cook. Concept Compare tools and manual code review in head-tohead
Debugging and Bug Tracking. Slides provided by Prof. Andreas Zeller, Universität des Saarlands http://whyprogramsfail.com
Debugging and Bug Tracking Slides provided by Prof. Andreas Zeller, Universität des Saarlands http://whyprogramsfail.com Learning goals 1. part: Debugging Terminology o Defect o Infection o Failure Debugging
Secure Programming with Static Analysis. Jacob West [email protected]
Secure Programming with Static Analysis Jacob West [email protected] Software Systems that are Ubiquitous Connected Dependable Complexity U Unforeseen Consequences Software Security Today The line between
/* File: blkcopy.c. size_t n
13.1. BLOCK INPUT/OUTPUT 505 /* File: blkcopy.c The program uses block I/O to copy a file. */ #include main() { signed char buf[100] const void *ptr = (void *) buf FILE *input, *output size_t
Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61
F# Applications to Computational Financial and GPU Computing May 16th Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61 Today! Why care about F#? Just another fashion?! Three success stories! How Alea.cuBase
This presentation explains how to monitor memory consumption of DataStage processes during run time.
This presentation explains how to monitor memory consumption of DataStage processes during run time. Page 1 of 9 The objectives of this presentation are to explain why and when it is useful to monitor
The software model checker BLAST
Int J Softw Tools Technol Transfer (2007) 9:505 525 DOI 10.1007/s10009-007-0044-z SPECIAL SECTION FASE 04/05 The software model checker BLAST Applications to software engineering Dirk Beyer Thomas A. Henzinger
Virtuozzo Virtualization SDK
Virtuozzo Virtualization SDK Programmer's Guide February 18, 2016 Copyright 1999-2016 Parallels IP Holdings GmbH and its affiliates. All rights reserved. Parallels IP Holdings GmbH Vordergasse 59 8200
C++FA 3.1 OPTIMIZING C++
C++FA 3.1 OPTIMIZING C++ Ben Van Vliet Measuring Performance Performance can be measured and judged in different ways execution time, memory usage, error count, ease of use and trade offs usually have
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
Masters programmes in Computer Science and Information Systems. Object-Oriented Design and Programming. Sample module entry test xxth December 2013
Masters programmes in Computer Science and Information Systems Object-Oriented Design and Programming Sample module entry test xxth December 2013 This sample paper has more questions than the real paper
GENERIC and GIMPLE: A New Tree Representation for Entire Functions
GENERIC and GIMPLE: A New Tree Representation for Entire Functions Jason Merrill Red Hat, Inc. [email protected] 1 Abstract The tree SSA project requires a tree representation of functions for the optimizers
Specific Simple Network Management Tools
Specific Simple Network Management Tools Jürgen Schönwälder University of Osnabrück Albrechtstr. 28 49069 Osnabrück, Germany Tel.: +49 541 969 2483 Email: Web:
C++ for Safety-Critical Systems. DI Günter Obiltschnig Applied Informatics Software Engineering GmbH guenter.obiltschnig@appinf.
C++ for Safety-Critical Systems DI Günter Obiltschnig Applied Informatics Software Engineering GmbH [email protected] A life-critical system or safety-critical system is a system whose failure
An Introduction to Assembly Programming with the ARM 32-bit Processor Family
An Introduction to Assembly Programming with the ARM 32-bit Processor Family G. Agosta Politecnico di Milano December 3, 2011 Contents 1 Introduction 1 1.1 Prerequisites............................. 2
Soft-Timer Driven Transient Kernel Control Flow Attacks and Defense
Soft-Timer Driven Transient Kernel Control Flow Attacks and Defense Jinpeng Wei, Bryan D. Payne, Jonathon Giffin, Calton Pu Georgia Institute of Technology Annual Computer Security Applications Conference
Chapter 13 Storage classes
Chapter 13 Storage classes 1. Storage classes 2. Storage Class auto 3. Storage Class extern 4. Storage Class static 5. Storage Class register 6. Global and Local Variables 7. Nested Blocks with the Same
Visualizing gem5 via ARM DS-5 Streamline. Dam Sunwoo ([email protected]) ARM R&D December 2012
Visualizing gem5 via ARM DS-5 Streamline Dam Sunwoo ([email protected]) ARM R&D December 2012 1 The Challenge! System-level research and performance analysis becoming ever so complicated! More cores and
How to Write a Checker in 24 Hours
How to Write a Checker in 24 Hours Clang Static Analyzer Anna Zaks and Jordan Rose Apple Inc. What is this talk about? The Clang Static Analyzer is a bug finding tool It can be extended with custom checkers
UniFinger Engine SDK Manual (sample) Version 3.0.0
UniFinger Engine SDK Manual (sample) Version 3.0.0 Copyright (C) 2007 Suprema Inc. Table of Contents Table of Contents... 1 Chapter 1. Introduction... 2 Modules... 3 Products... 3 Licensing... 3 Supported
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Transparent Monitoring of a Process Self in a Virtual Environment
Transparent Monitoring of a Process Self in a Virtual Environment PhD Lunchtime Seminar Università di Pisa 24 Giugno 2008 Outline Background Process Self Attacks Against the Self Dynamic and Static Analysis
Stacks. Linear data structures
Stacks Linear data structures Collection of components that can be arranged as a straight line Data structure grows or shrinks as we add or remove objects ADTs provide an abstract layer for various operations
Computer Systems II. Unix system calls. fork( ) wait( ) exit( ) How To Create New Processes? Creating and Executing Processes
Computer Systems II Creating and Executing Processes 1 Unix system calls fork( ) wait( ) exit( ) 2 How To Create New Processes? Underlying mechanism - A process runs fork to create a child process - Parent
Comp151. Definitions & Declarations
Comp151 Definitions & Declarations Example: Definition /* reverse_printcpp */ #include #include using namespace std; int global_var = 23; // global variable definition void reverse_print(const
Applications of formal verification for secure Cloud environments at CEA LIST
Applications of formal verification for secure Cloud environments at CEA LIST Nikolai Kosmatov joint work with A.Blanchard, F.Bobot, M.Lemerre,... SEC2, Lille, June 30 th, 2015 N. Kosmatov (CEA LIST) Formal
Comprehensive Static Analysis Using Polyspace Products. A Solution to Today s Embedded Software Verification Challenges WHITE PAPER
Comprehensive Static Analysis Using Polyspace Products A Solution to Today s Embedded Software Verification Challenges WHITE PAPER Introduction Verification of embedded software is a difficult task, made
Introduction. dnotify
Introduction In a multi-user, multi-process operating system, files are continually being created, modified and deleted, often by apparently unrelated processes. This means that any software that needs
Computing Concepts with Java Essentials
2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
Building Embedded Systems
All Rights Reserved. The contents of this document cannot be reproduced without prior permission of the authors. Building Embedded Systems Chapter 5: Maintenance and Debugging Andreas Knirsch [email protected]
Replication on Virtual Machines
Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism
Debugging with TotalView
Tim Cramer 17.03.2015 IT Center der RWTH Aachen University Why to use a Debugger? If your program goes haywire, you may... ( wand (... buy a magic... read the source code again and again and...... enrich
Linux Kernel. Security Report
Linux Kernel Security Report September 25 Authors: Andy Chou, Bryan Fulton and Seth Hallem Coverity has combined two years of analysis work carried out in a commercial setting at Coverity with four years
Project 2: Bejeweled
Project 2: Bejeweled Project Objective: Post: Tuesday March 26, 2013. Due: 11:59PM, Monday April 15, 2013 1. master the process of completing a programming project in UNIX. 2. get familiar with command
Common clock framework: how to use it
Embedded Linux Conference 2013 Common clock framework: how to use it Gregory CLEMENT Free Electrons [email protected] Free Electrons. Kernel, drivers and embedded Linux development, consulting,
recursion, O(n), linked lists 6/14
recursion, O(n), linked lists 6/14 recursion reducing the amount of data to process and processing a smaller amount of data example: process one item in a list, recursively process the rest of the list
AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping
AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping 3.1.1 Constants, variables and data types Understand what is mean by terms data and information Be able to describe the difference
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
Logging. Working with the POCO logging framework.
Logging Working with the POCO logging framework. Overview > Messages, Loggers and Channels > Formatting > Performance Considerations Logging Architecture Message Logger Channel Log File Logging Architecture
Fully Automated Static Analysis of Fedora Packages
Fully Automated Static Analysis of Fedora Packages Red Hat Kamil Dudka August 9th, 2014 Abstract There are static analysis tools (such as Clang or Cppcheck) that are able to find bugs in Fedora packages
Lab 6: Building Your Own Firewall
CS498 Systems and Networking Lab Spring 2012 Lab 6: Building Your Own Firewall Instructor: Matthew Caesar Due: Firewalls are widely deployed technologies for protecting networks from unauthorized access
An Overview of Java. overview-1
An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2
Parallel Computing. Parallel shared memory computing with OpenMP
Parallel Computing Parallel shared memory computing with OpenMP Thorsten Grahs, 14.07.2014 Table of contents Introduction Directives Scope of data Synchronization OpenMP vs. MPI OpenMP & MPI 14.07.2014
Object Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
Intro to GPU computing. Spring 2015 Mark Silberstein, 048661, Technion 1
Intro to GPU computing Spring 2015 Mark Silberstein, 048661, Technion 1 Serial vs. parallel program One instruction at a time Multiple instructions in parallel Spring 2015 Mark Silberstein, 048661, Technion
Basic Java Constructs and Data Types Nuts and Bolts. Looking into Specific Differences and Enhancements in Java compared to C
Basic Java Constructs and Data Types Nuts and Bolts Looking into Specific Differences and Enhancements in Java compared to C 1 Contents Hello World Program Statements Explained Java Program Structure in
CPU Scheduling Outline
CPU Scheduling Outline What is scheduling in the OS? What are common scheduling criteria? How to evaluate scheduling algorithms? What are common scheduling algorithms? How is thread scheduling different
PKCS #11 opencryptoki for Linux HOWTO
PKCS #11 opencryptoki for Linux HOWTO Kristin Thomas [email protected] This HOWTO describes the implementation of the RSA Security Inc. Public Key Cryptographic Standard #11 (PKCS #11) cryptoki application
1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version
Version 3.5 JEFFERSON LAB Data Acquisition Group cmsg Developer s Guide J E F F E R S O N L A B D A T A A C Q U I S I T I O N G R O U P cmsg Developer s Guide Elliott Wolin [email protected] Carl Timmer [email protected]
CSCE 665: Lab Basics. Virtual Machine. Guofei Gu
CSCE 665: Lab Basics Guofei Gu Virtual Machine Virtual Machine: a so?ware implementacon of a programmable machine(client), where the so?ware implementacon is constrained within another computer(host) at
CISC 181 Project 3 Designing Classes for Bank Accounts
CISC 181 Project 3 Designing Classes for Bank Accounts Code Due: On or before 12 Midnight, Monday, Dec 8; hardcopy due at beginning of lecture, Tues, Dec 9 What You Need to Know This project is based on
Development Techniques for Native/Hybrid Tizen Apps. Presented by Kirill Kruchinkin
Development Techniques for Native/Hybrid Tizen Apps Presented by Kirill Kruchinkin Agenda Introduction and Definitions Practices Case Studies 2 Introduction & Definitions 2 App Types Browser Apps Installable
A Typing System for an Optimizing Multiple-Backend Tcl Compiler
The following paper was originally published in the Proceedings of the Fifth Annual Tcl/Tk Workshop Boston, Massachusetts, July 1997 A Typing System for an Optimizing Multiple-Backend Tcl Compiler Forest
I/O Device and Drivers
COS 318: Operating Systems I/O Device and Drivers Prof. Margaret Martonosi Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall11/cos318/ Announcements Project
Chapter 13: Program Development and Programming Languages
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
Process definition Concurrency Process status Process attributes PROCESES 1.3
Process Management Outline Main concepts Basic services for process management (Linux based) Inter process communications: Linux Signals and synchronization Internal process management Basic data structures:
Týr: a dependent type system for spatial memory safety in LLVM
Týr: a dependent type system for spatial memory safety in LLVM Vítor De Araújo Álvaro Moreira (orientador) Rodrigo Machado (co-orientador) August 13, 2015 Vítor De Araújo Álvaro Moreira (orientador) Týr:
CS 294-73 Software Engineering for Scientific Computing. http://www.cs.berkeley.edu/~colella/cs294. Lecture 25:Mixed Language Programming.
CS 294-73 Software Engineering for Scientific Computing http://www.cs.berkeley.edu/~colella/cs294 Lecture 25:Mixed Language Programming. Different languages Technical, historical, cultural differences
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
In-situ Visualization
In-situ Visualization Dr. Jean M. Favre Scientific Computing Research Group 13-01-2011 Outline Motivations How is parallel visualization done today Visualization pipelines Execution paradigms Many grids
