Auto-Pipe Software Block Interface v2. Interface. Contents. Auto-Pipe Types. From Auto-Pipe Wiki

Size: px
Start display at page:

Download "Auto-Pipe Software Block Interface v2. Interface. Contents. Auto-Pipe Types. From Auto-Pipe Wiki"

Transcription

1 Auto-Pipe Software Block Interface v2 From Auto-Pipe Wiki Contents 1 Interface 1.1 Auto-Pipe Types 1.2 AutoPipe Functions 1.3 Block Structure 1.4 Block Functions 2 Signaling 2.1 Stop Signal (type 0) 2.2 Credit Signal (type 1) 3 Examples 3.1 Simple Example 3.2 More Complex Example 4 Changes Since Version 1 Interface Each block exports certain functions to the Auto-Pipe runtime system. These functions are declared in a header file with the name "blockname.h" where blockname is the name of the block. To access the Auto-Pipe types and related functions and macros, the block header file should include "X.h". The functions declared in the block header file are defined in a file with the name "blockname.c". Auto-Pipe Types The following types are available: UNSIGNED8 SIGNED8 UNSIGNED16 SIGNED16 UNSIGNED32 SIGNED32 UNSIGNED64 SIGNED64 FLOAT32 FLOAT96 STRING - NULL-terminated character array. 1/7

2 AutoPipe Functions The following functions are exposed to the Auto-Pipe block. The first argument to each of these is a pointer to instance-specific data for the block. int ap_get_max_send(struct ap_blockname_data *block, int out_port); int ap_get_free(struct ap_blockname_data *block, int out_port); void *ap_allocate(struct ap_blockname_data *block, int out_port, int count); void ap_send(struct ap_blockname_data *block, int out_port, int count); void ap_release(struct ap_blockname_data *block, int in_port, int count); void ap_send_signal(struct ap_block block, int out_port, int type, int value); int ap_get_input_count(struct ap_blockname_data *block, int in_port); void *ap_get_input_data(struct ap_blockname_data *block, int in_port); int ap_check_inputs_upto(struct ap_blockname_data *block, int in_port); ap_get_max_send - Determine the maximum "safe" send count for out_port. Note that the value returned will not change from call to call. For SHM and intra-process edges, this will be the half of the queue size between two blocks. This is because the queues are implemented using a ring buffer. Since the "read" pointer is controlled by the consumer, even if the buffer is empty, a write can't cross the read pointer. Thus, if the read pointer is in the middle of the buffer, we can write to the first half or the last half, but not the whole buffer. ap_get_free - Determine how many items can be allocated on out_port without blocking. Note that it is possible for this value to be larger than the value returned from "ap_get_max_send" since this value indicates how much can be allocated now whereas "ap_get_max_send" returns a lower bound on how much can be allocated at a time. The value returned from "ap_get_free" can be zero. "ap_get_max_send" is faster than "ap_get_free", but "ap_get_free" allows one to avoid blocking, which can be useful for a block that is trying to balance work sent downstream. ap_allocate - Allocate memory for count data elements on port out_port, which must be a valid output port number (port numbers start at 0). Note that this will allocate count*sizeof(porttype) bytes of memory where porttype is the type of the port as specified in the X block description. NULL is returned if the memory could not be allocated. If multiple items are to be allocated, use "ap_get_max_send" or "ap_get_free" to determine how many items can be allocated at a time. This will block until enough space is available. ap_send - Send count items on port out_port. Note that this uses the buffer from the ap_allocate call. If the count is less than the allocated space, the block can either call ap_allocate again to disgard the remaining items or ap_send again to send the remaining items. ap_release - Release count data elements from port in_port. This call is used to tell the Auto-Pipe runtime that the block is finished with data from a "push" call. If all of the data isn't consumed, Auto-Pipe will call the block back with an updated pointer and data count for the port. If release isn't called on a push, Auto-Pipe will assume that the block is saving the data for later and needs more data from a different port before continuing. ap_send_signal - Send a signal of type type on output port out_port with value value. ap_get_input_count - Get the number of items available on port in_port. ap_get_input_data - Get a pointer to the data available on port in_port. ap_check_inputs_upto - Return 1 if input ports up to and including in_port have data available, otherwise returns 0. Most of these "functions" are implemented as macros in X.h. Block Structure Each block must define a structure named "ap_blockname_data" in its header file. Items of this type are used to hold block instance-specific data which includes configuration options and any local variables required by a block. Configuration options must have the same name and type as specified in the X description. Configuration options 2/7

3 are available to the block before the block's "init" function is called. Here is an example of the structure for a block with an UNSIGNED32 configuration option named "config_option" and no other per-instance variables: struct ap_example_data UNSIGNED32 config_option; ; Block Functions Each block must declare the following functions in the header file. These functions must be implemented in the block's source file. Note that it is also possible to define one or more of these functions as macros in the header file. In this case the function does not need to be present in the ".c" file. void ap_blockname_init(struct ap_blockname_data *block); void ap_blockname_destroy(struct ap_blockname_data *block); void ap_blockname_push(struct ap_blockname_data *block, int port, void *ptr, int count); int ap_blockname_go(struct ap_blockname_data *block); void ap_blockname_push_signal(struct ap_blockname_data *block, int port, int type, int value); A description of these functions follows. ap_blockname_init - Perform block initialization, such as opening files and initializing tables. This is called once per block instance when the application is started. Note that it is not safe to send data or signals at this point. ap_blockname_destroy - Perform rundown, such as closing files and deallocating memory. This is called once per block instance when the application shuts down. ap_blockname_push - Auto-Pipe calls this function when data becomes available on one of the block's input ports. port is the input port number (starting at 0), ptr is a pointer to the data on the port which the push was called, and count is the number of new elements available. Note that once data for one port is available, this function will not be called for data on the same port until all of the data for the port is released by calling the release function. ap_blockname_go - Auto-Pipe calls this function after start up once it is safe to start sending data. The return value of this function determines whether Auto-Pipe should call the function again. If the return value is 0, Auto-Pipe will call it again. ap_blockname_push_signal - Auto-Pipe calls this function when a signal is received. The port parameter indicates the input port on which the signal received, the type parameter is the signal type, and the value parameter is the signal value. Signaling Stop Signal (type 0) Stop signals allow Auto-Pipe applications to shut down cleanly. A stop signal is delivered on a port when a stop signal is received for that port and the credit for the port is zero. Blocks without input ports will not receive stop signals. 3/7

4 Stop signals are automatically generated on all output ports of a block when all of the following are true: 1. A non-zero value has been returned from the block's "go" function and 2. A stop signal has been received on all input ports and the credit for all input ports is zero. RDC: we also need for the block to indicate that it is done sending. Is the return from sighandler() sufficient for this? JGW: I was thinking that a return from sighandler would be sufficient since the block won't receive any more calls into it from "push" after this happens and we could enforce that "go" wouldn't be called any more either. The credit field for a stop signal contains a value that is zero when added to the credit for the input port of the next block. By doing this and waiting for the credit to be zero, we ensure that the next block will have consumed all of its input before the stop signals are delivered to the block and propagated. Note that we don't need to queue up the signals since the stop signal will be the last signal, however, we may need to hold on to the stop signal until more data arrives. An Auto-Pipe process will exit when all of the following are true: 1. All input ports for blocks mapped to the process have received a stop signal and 2. All output ports for blocks mapped to the process have sent a stop signal. Since the Auto-Pipe infrastructure manages stop signals, blocks are prohibited from sending them. However, blocks can respond to stop signals in the push_signal call, which will occur before the stop signal is propagated. Credit Signal (type 1) Credit signals prevent Auto-Pipe applications from deadlocking. Each input and output port has an associated credit. This credit is initialized to zero when Auto-Pipe starts. For input ports: 1. When a signal arrives on an input port, the credit field of the signal is added to the input port's credit. 2. When data arrives on an input port, the credit is decremented by the number of data elements. 3. Additional data is not delivered to the block unless the credit for the port is greater than zero (this may not be necessary, but we need to track this credit for the stop signal to work properly). For output ports: 1. When data is sent on an output port, the credit for that output port is decremented by the number of data elements sent. 2. If the credit for an output port goes negative, a credit signal is sent on all output ports to bring the credit back up to the buffer capacity. Examples Simple Example Here's a simple example of a version 2 block to add two numbers that only adds one pair at a time. 4/7

5 add_2u32.h: #ifndef ADD_2U32_H_ #define ADD_2U32_H_ #include "X.h" struct ap_add_2u32_data /* No instance-specific data */ ; void ap_add_2u32_init(struct ap_add_2u32_data *block); void ap_add_2u32_destroy(struct ap_add_2u32_data *block); void ap_add_2u32_push(struct ap_add_2u32_data *block, int port, void *ptr, int count); int ap_add_2u32_go(struct ap_add_2u32_data *block); void ap_add_2u32_push_signal(struct ap_add_2u32_data *block, int port, int type, int value); #endif add_2u32.c #include "add_2u32.h" void ap_add_2u32_init(struct ap_add_2u32_data *block) void ap_add_2u32_destroy(struct ap_add_2u32_data *block) void ap_add_2u32_push(struct ap_add_2u32_data *block, int port, void *ptr, int count) UNSIGNED32 *a = (UNSIGNED32*)ap_get_input_data(block, 0); UNSIGNED32 *b = (UNSIGNED32*)ap_get_input_data(block, 1); if(a!= NULL && b!= NULL) UNSIGNED32 *out = (UNSIGNED32*)ap_allocate(block, 0, 1); *out = *a + *b; ap_send(block, 0, 1); ap_release(block, 0, 1); ap_release(block, 1, 1); int ap_add_2u32_go(struct ap_add_2u32_data *block) return 1; // No need to call this again. void ap_add_2u32_push_signal(struct ap_add_2u32_data *block, int port, int type, int value) // We're not doing anything with signals. More Complex Example Here is a more complex example of a version 2 block to add two numbers. This one can add multiple pairs of numbers per call. add_2u32.h: #ifndef ADD_2U32_H_ #define ADD_2U32_H_ #include "X.h" 5/7

6 struct ap_add_2u32_data /* No instance-specific data. */ ; void ap_add_2u32_init(struct ap_add_2u32_data *block); void ap_add_2u32_destroy(struct ap_add_2u32_data *block); void ap_add_2u32_push(struct ap_add_2u32_data *block, int port, void *ptr, int count); int ap_add_2u32_go(struct ap_add_2u32_data *block); void ap_add_2u32_push_signal(struct ap_add_2u32_data *block, int port, int type, int value); #endif add_2u32.c #include "add_2u32.h" void ap_add_2u32_init(struct ap_add_2u32_data *block) void ap_add_2u32_destroy(struct ap_add_2u32_data *block) void ap_add_2u32_push(struct ap_add_2u32_data *block, int port, void *ptr, int count) const int count_a = ap_get_input_count(block, 0); const int count_b = ap_get_input_count(block, 1); if(count_a > 0 && count_b > 0) int send_count = ap_get_max_send(block, 0); if(send_count > count_a) send_count = count_a; if(send_count > count_b) send_count = count_b; UNSIGNED32 *a = (UNSIGNED32*)ap_get_input_data(block, 0); UNSIGNED32 *b = (UNSIGNED32*)ap_get_input_data(block, 1); UNSIGNED32 *out = (UNSIGNED32*)ap_allocate(block, 0, send_count); // Compute the sums. int i; for(i = 0; i < send_count; i++) out[i] = a[i] + b[i]; // Send the results on port 0. ap_send(block, 0, send_count); // Release the data we consumed. ap_release(block, 0, send_count); ap_release(block, 1, send_count); int ap_add_2u32_go(struct ap_add_2u32_data *block) return 1; // No need to call this again. void ap_add_2u32_push_signal(struct ap_add_2u32_data *block, int port, int type, int value) // We're not doing anything with signals. 6/7

7 Changes Since Version 1 Support for signals has been added (ap_blockname_signal_handler and ap_send_signal). Blocks must now call "ap_allocate" to obtain memory for sends. A "count" parameter is available allowing the runtime system to batch up sends and receives. The "release" function no longer takes a parameter to determine if it should free the memory. From the block's perspective, the memory is always freed and cannot be used for sends. Everything except configuration parameters has been removed from the block structure. The functions are now global (ap_send, for example) and the input/output ports are available via other means. The header file for the block no longer has the "X." prefix. Retrieved from " This page was last modified on 19 August 2011, at 15:35. 7/7

In Java we have the keyword null, which is the value of an uninitialized reference type

In Java we have the keyword null, which is the value of an uninitialized reference type + More on Pointers + Null pointers In Java we have the keyword null, which is the value of an uninitialized reference type In C we sometimes use NULL, but its just a macro for the integer 0 Pointers are

More information

Homework #3 CS2255 Fall 2012

Homework #3 CS2255 Fall 2012 Homework #3 CS2255 Fall 2012 MULTIPLE CHOICE 1. The, also known as the address operator, returns the memory address of a variable. a. asterisk ( * ) b. ampersand ( & ) c. percent sign (%) d. exclamation

More information

In the CERTAINTY project, an application is defined as a network of independent processes with the following features:

In the CERTAINTY project, an application is defined as a network of independent processes with the following features: C/C++ Coding Guide G. Giannopoulou, P. Huang, N. Stoimenov, L. Thiele April 15, 2014 This document describes how to program DOL-Critical applications using C/C++ as programming language. To be able to

More information

P.G.TRB - COMPUTER SCIENCE. c) data processing language d) none of the above

P.G.TRB - COMPUTER SCIENCE. c) data processing language d) none of the above P.G.TRB - COMPUTER SCIENCE Total Marks : 50 Time : 30 Minutes 1. C was primarily developed as a a)systems programming language b) general purpose language c) data processing language d) none of the above

More information

TDDE18 & 726G77. Functions

TDDE18 & 726G77. Functions TDDE18 & 726G77 Functions Labs update No more one time password. We will note who have demonstrated during the lab and register this in webreg. Use the terminal to send in your lab! Dont use Visual studio

More information

IMPORTANT QUESTIONS IN C FOR THE INTERVIEW

IMPORTANT QUESTIONS IN C FOR THE INTERVIEW IMPORTANT QUESTIONS IN C FOR THE INTERVIEW 1. What is a header file? Header file is a simple text file which contains prototypes of all in-built functions, predefined variables and symbolic constants.

More information

Memory Allocation in C

Memory Allocation in C Memory Allocation in C When a C program is loaded into memory, it is organized into three areas of memory, called segments: the text segment, stack segment and heap segment. The text segment (also called

More information

Final Exam. 11 May 2018, 120 minutes, 26 questions, 100 points

Final Exam. 11 May 2018, 120 minutes, 26 questions, 100 points Name: CS520 Final Exam 11 May 2018, 120 minutes, 26 questions, 100 points The exam is closed book and notes. Please keep all electronic devices turned off and out of reach. Note that a question may require

More information

QUIZ. What are 3 differences between C and C++ const variables?

QUIZ. What are 3 differences between C and C++ const variables? QUIZ What are 3 differences between C and C++ const variables? Solution QUIZ Source: http://stackoverflow.com/questions/17349387/scope-of-macros-in-c Solution The C/C++ preprocessor substitutes mechanically,

More information

Object-Oriented Programming

Object-Oriented Programming iuliana@cs.ubbcluj.ro Babes-Bolyai University 2018 1 / 37 Overview 1 2 3 4 5 2 / 37 Questions we will answer today What is the difference between the stack and the heap? How can we allocate and free memory

More information

Provided by - Microsoft Placement Paper Technical 2012

Provided by   - Microsoft Placement Paper Technical 2012 Provided by www.yuvajobs.com - Microsoft Placement Paper Technical 2012 1. Analytical 25 questions ( 30 minutes) 2. Reasoning 25 questions (25 minutes) 3. Verbal 20 questions (20 minutes) Analytical (some

More information

NOTE: Debug and DebugSingle are the only MPI library configurations that will produce trace output.

NOTE: Debug and DebugSingle are the only MPI library configurations that will produce trace output. Trace Objects Trace Objects Introduction Use the Trace module to selectively produce trace output on a global and/or per-object basis for your application. You can specify the types of trace output when

More information

Lectures 5-6: Introduction to C

Lectures 5-6: Introduction to C Lectures 5-6: Introduction to C Motivation: C is both a high and a low-level language Very useful for systems programming Faster than Java This intro assumes knowledge of Java Focus is on differences Most

More information

A. Year / Module Semester Subject Topic 2016 / V 2 PCD Pointers, Preprocessors, DS

A. Year / Module Semester Subject Topic 2016 / V 2 PCD Pointers, Preprocessors, DS Syllabus: Pointers and Preprocessors: Pointers and address, pointers and functions (call by reference) arguments, pointers and arrays, address arithmetic, character pointer and functions, pointers to pointer,initialization

More information

Kurt Schmidt. October 30, 2018

Kurt Schmidt. October 30, 2018 to Structs Dept. of Computer Science, Drexel University October 30, 2018 Array Objectives to Structs Intended audience: Student who has working knowledge of Python To gain some experience with a statically-typed

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

Administrivia. Introduction to Computer Systems. Pointers, cont. Pointer example, again POINTERS. Project 2 posted, due October 6

Administrivia. Introduction to Computer Systems. Pointers, cont. Pointer example, again POINTERS. Project 2 posted, due October 6 CMSC 313 Introduction to Computer Systems Lecture 8 Pointers, cont. Alan Sussman als@cs.umd.edu Administrivia Project 2 posted, due October 6 public tests s posted Quiz on Wed. in discussion up to pointers

More information

ECE 15B COMPUTER ORGANIZATION

ECE 15B COMPUTER ORGANIZATION ECE 15B COMPUTER ORGANIZATION Lecture 13 Strings, Lists & Stacks Announcements HW #3 Due next Friday, May 15 at 5:00 PM in HFH Project #2 Due May 29 at 5:00 PM Project #3 Assigned next Thursday, May 19

More information

EL6483: Brief Overview of C Programming Language

EL6483: Brief Overview of C Programming Language EL6483: Brief Overview of C Programming Language EL6483 Spring 2016 EL6483 EL6483: Brief Overview of C Programming Language Spring 2016 1 / 30 Preprocessor macros, Syntax for comments Macro definitions

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Here's how you declare a function that returns a pointer to a character:

Here's how you declare a function that returns a pointer to a character: 23 of 40 3/28/2013 10:35 PM Violets are blue Roses are red C has been around, But it is new to you! ANALYSIS: Lines 32 and 33 in main() prompt the user for the desired sort order. The value entered is

More information

1. Overview This project will help you understand address spaces and virtual memory management.

1. Overview This project will help you understand address spaces and virtual memory management. Project 2--Memory Worth: 12 points Assigned: Due: 1. Overview This project will help you understand address spaces and virtual memory management. In this project, you will implement an external pager,

More information

Macros and Preprocessor. CGS 3460, Lecture 39 Apr 17, 2006 Hen-I Yang

Macros and Preprocessor. CGS 3460, Lecture 39 Apr 17, 2006 Hen-I Yang Macros and Preprocessor CGS 3460, Lecture 39 Apr 17, 2006 Hen-I Yang Previously Operations on Linked list (Create and Insert) Agenda Linked List (More insert, lookup and delete) Preprocessor Linked List

More information

Dynamic Allocation of Memory

Dynamic Allocation of Memory Dynamic Allocation of Memory Lecture 4 Sections 10.9-10.10 Robb T. Koether Hampden-Sydney College Fri, Jan 25, 2013 Robb T. Koether (Hampden-Sydney College) Dynamic Allocation of Memory Fri, Jan 25, 2013

More information

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

CprE 288 Introduction to Embedded Systems Exam 1 Review.  1 CprE 288 Introduction to Embedded Systems Exam 1 Review http://class.ece.iastate.edu/cpre288 1 Overview of Today s Lecture Announcements Exam 1 Review http://class.ece.iastate.edu/cpre288 2 Announcements

More information

A506 / C201 Computer Programming II Placement Exam Sample Questions. For each of the following, choose the most appropriate answer (2pts each).

A506 / C201 Computer Programming II Placement Exam Sample Questions. For each of the following, choose the most appropriate answer (2pts each). A506 / C201 Computer Programming II Placement Exam Sample Questions For each of the following, choose the most appropriate answer (2pts each). 1. Which of the following functions is causing a temporary

More information

Exercise Session 2 Simon Gerber

Exercise Session 2 Simon Gerber Exercise Session 2 Simon Gerber CASP 2014 Exercise 2: Binary search tree Implement and test a binary search tree in C: Implement key insert() and lookup() functions Implement as C module: bst.c, bst.h

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

Pointers! Arizona State University 1

Pointers! Arizona State University 1 Pointers! CSE100 Principles of Programming with C++, Fall 2018 (based off Chapter 10 slides by Pearson) Ryan Dougherty Arizona State University http://www.public.asu.edu/~redoughe/ Arizona State University

More information

C++ Tutorial AM 225. Dan Fortunato

C++ Tutorial AM 225. Dan Fortunato C++ Tutorial AM 225 Dan Fortunato Anatomy of a C++ program A program begins execution in the main() function, which is called automatically when the program is run. Code from external libraries can be

More information

CSCI-243 Exam 1 Review February 22, 2015 Presented by the RIT Computer Science Community

CSCI-243 Exam 1 Review February 22, 2015 Presented by the RIT Computer Science Community CSCI-243 Exam 1 Review February 22, 2015 Presented by the RIT Computer Science Community http://csc.cs.rit.edu History and Evolution of Programming Languages 1. Explain the relationship between machine

More information

Lecture 03 Bits, Bytes and Data Types

Lecture 03 Bits, Bytes and Data Types Lecture 03 Bits, Bytes and Data Types Computer Languages A computer language is a language that is used to communicate with a machine. Like all languages, computer languages have syntax (form) and semantics

More information

Implementing Abstractions

Implementing Abstractions Implementing Abstractions Pointers A pointer is a C++ variable that stores the address of an object. Given a pointer to an object, we can get back the original object. Can then read the object's value.

More information

ME 461 C review Session Fall 2009 S. Keres

ME 461 C review Session Fall 2009 S. Keres ME 461 C review Session Fall 2009 S. Keres DISCLAIMER: These notes are in no way intended to be a complete reference for the C programming material you will need for the class. They are intended to help

More information

Arrays and Linked Lists

Arrays and Linked Lists Arrays and Linked Lists Abstract Data Types Stacks Queues Priority Queues and Deques John Edgar 2 And Stacks Reverse Polish Notation (RPN) Also known as postfix notation A mathematical notation Where every

More information

Computer Science & Information Technology (CS) Rank under AIR 100. Examination Oriented Theory, Practice Set Key concepts, Analysis & Summary

Computer Science & Information Technology (CS) Rank under AIR 100. Examination Oriented Theory, Practice Set Key concepts, Analysis & Summary GATE- 2016-17 Postal Correspondence 1 C-Programming Computer Science & Information Technology (CS) 20 Rank under AIR 100 Postal Correspondence Examination Oriented Theory, Practice Set Key concepts, Analysis

More information

CSC209 Review. Yeah! We made it!

CSC209 Review. Yeah! We made it! CSC209 Review Yeah! We made it! 1 CSC209: Software tools Unix files and directories permissions utilities/commands Shell programming quoting wild cards files 2 ... and C programming... C basic syntax functions

More information

CS201 Some Important Definitions

CS201 Some Important Definitions CS201 Some Important Definitions For Viva Preparation 1. What is a program? A program is a precise sequence of steps to solve a particular problem. 2. What is a class? We write a C++ program using data

More information

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011 More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors

More information

Heap Arrays and Linked Lists. Steven R. Bagley

Heap Arrays and Linked Lists. Steven R. Bagley Heap Arrays and Linked Lists Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index Variables and arrays have a type Create our

More information

III. Classes (Chap. 3)

III. Classes (Chap. 3) III. Classes III-1 III. Classes (Chap. 3) As we have seen, C++ data types can be classified as: Fundamental (or simple or scalar): A data object of one of these types is a single object. int, double, char,

More information

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor. 3.Constructors and Destructors Develop cpp program to implement constructor and destructor. Constructors A constructor is a special member function whose task is to initialize the objects of its class.

More information

FORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each):

FORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each): FORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each): 1. If a function has default arguments, they can be located anywhere

More information

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco CS 326 Operating Systems C Programming Greg Benson Department of Computer Science University of San Francisco Why C? Fast (good optimizing compilers) Not too high-level (Java, Python, Lisp) Not too low-level

More information

CS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/

CS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/ CS61C Machine Structures Lecture 4 C Pointers and Arrays 1/25/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L04 C Pointers (1) Common C Error There is a difference

More information

CP2 Revision. theme: dynamic datatypes & data structures

CP2 Revision. theme: dynamic datatypes & data structures CP2 Revision theme: dynamic datatypes & data structures structs can hold any combination of datatypes handled as single entity struct { }; ;

More information

Appendix A Pseudocode of the wlan_mac Process Model in OPNET

Appendix A Pseudocode of the wlan_mac Process Model in OPNET Appendix A Pseudocode of the wlan_mac Process Model in OPNET static void wlan_frame_transmit () { char msg_string [120]; char msg_string1 [120]; WlanT_Hld_List_Elem* hld_ptr; const WlanT_Data_Header_Fields*

More information

Reminder: compiling & linking

Reminder: compiling & linking Reminder: compiling & linking source file 1 object file 1 source file 2 compilation object file 2 library object file 1 linking (relocation + linking) load file source file N object file N library object

More information

CS 61C: Great Ideas in Computer Architecture Introduction to C

CS 61C: Great Ideas in Computer Architecture Introduction to C CS 61C: Great Ideas in Computer Architecture Introduction to C Instructors: Vladimir Stojanovic & Nicholas Weaver http://inst.eecs.berkeley.edu/~cs61c/ 1 Agenda C vs. Java vs. Python Quick Start Introduction

More information

CAN Module Documentation

CAN Module Documentation CAN Module Documentation Thomas Craig twc22 12/11/2009 Overview Purpose To provide a standard and robust C-language ARM7 software interface to the Controller Area Network (CAN) busses that form the main

More information

Machine Problem 1: A Simple Memory Allocator. 100 points Due date: To Be Announced

Machine Problem 1: A Simple Memory Allocator. 100 points Due date: To Be Announced Machine Problem 1: A Simple Memory Allocator Introduction 100 points Due date: To Be Announced In this machine problem, you are to develop a simple memory allocator that implements the functions my malloc()

More information

Lectures 5-6: Introduction to C

Lectures 5-6: Introduction to C Lectures 5-6: Introduction to C Motivation: C is both a high and a low-level language Very useful for systems programming Faster than Java This intro assumes knowledge of Java Focus is on differences Most

More information

Embedding Python in Your C Programs

Embedding Python in Your C Programs 1 of 7 6/18/2006 9:05 PM Embedding Python in Your C Programs William Nagel Abstract C, meet Python. Python, this is C. With surprisingly little effort, the Python interpreter can be integrated into your

More information

To obtain the current global trace mask, call meitraceget(...). To modify the global trace mask, call meitraceset(...).

To obtain the current global trace mask, call meitraceget(...). To modify the global trace mask, call meitraceset(...). Trace Objects Trace Objects Introduction Use the Trace module to selectively produce trace output on a global and/or per-object basis for your application. You can specify the types of trace output when

More information

struct Properties C struct Types

struct Properties C struct Types struct Properties 1 The C struct mechanism is vaguely similar to the Java/C++ class mechanisms: - supports the creation of user-defined data types - struct types encapsulate data members struct Location

More information

M1-R4: Programing and Problem Solving using C (JAN 2019)

M1-R4: Programing and Problem Solving using C (JAN 2019) M1-R4: Programing and Problem Solving using C (JAN 2019) Max Marks: 100 M1-R4-07-18 DURATION: 03 Hrs 1. Each question below gives a multiple choice of answers. Choose the most appropriate one and enter

More information

C Programming Review CSC 4320/6320

C Programming Review CSC 4320/6320 C Programming Review CSC 4320/6320 Overview Introduction C program Structure Keywords & C Types Input & Output Arrays Functions Pointers Structures LinkedList Dynamic Memory Allocation Macro Compile &

More information

Rule 1-3: Use white space to break a function into paragraphs. Rule 1-5: Avoid very long statements. Use multiple shorter statements instead.

Rule 1-3: Use white space to break a function into paragraphs. Rule 1-5: Avoid very long statements. Use multiple shorter statements instead. Chapter 9: Rules Chapter 1:Style and Program Organization Rule 1-1: Organize programs for readability, just as you would expect an author to organize a book. Rule 1-2: Divide each module up into a public

More information

Chapter 17: Linked Lists

Chapter 17: Linked Lists Chapter 17: Linked Lists 17.1 Introduction to the Linked List ADT Introduction to the Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures list head

More information

Memory Allocation. General Questions

Memory Allocation. General Questions General Questions 1 Memory Allocation 1. Which header file should be included to use functions like malloc() and calloc()? A. memory.h B. stdlib.h C. string.h D. dos.h 2. What function should be used to

More information

Extending CircuitPython: An Introduction

Extending CircuitPython: An Introduction Extending CircuitPython: An Introduction Created by Dave Astels Last updated on 2018-11-15 11:08:03 PM UTC Guide Contents Guide Contents Overview How-To A Simple Example shared-module shared-bindings ports/atmel-samd

More information

CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM

CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM 1 Instructions In this lab you will be writing a dynamic storage allocator for C programs, i.e., your own version

More information

211: Computer Architecture Summer 2016

211: Computer Architecture Summer 2016 211: Computer Architecture Summer 2016 Liu Liu Topic: C Programming Structure: - header files - global / local variables - main() - macro Basic Units: - basic data types - arithmetic / logical / bit operators

More information

Pointer Basics. Lecture 13 COP 3014 Spring March 28, 2018

Pointer Basics. Lecture 13 COP 3014 Spring March 28, 2018 Pointer Basics Lecture 13 COP 3014 Spring 2018 March 28, 2018 What is a Pointer? A pointer is a variable that stores a memory address. Pointers are used to store the addresses of other variables or memory

More information

A brief introduction to C programming for Java programmers

A brief introduction to C programming for Java programmers A brief introduction to C programming for Java programmers Sven Gestegård Robertz September 2017 There are many similarities between Java and C. The syntax in Java is basically

More information

COMP26120: Linked List in C (2018/19) Lucas Cordeiro

COMP26120: Linked List in C (2018/19) Lucas Cordeiro COMP26120: Linked List in C (2018/19) Lucas Cordeiro lucas.cordeiro@manchester.ac.uk Linked List Lucas Cordeiro (Formal Methods Group) lucas.cordeiro@manchester.ac.uk Office: 2.28 Office hours: 10-11 Tuesday,

More information

Programming refresher and intro to C programming

Programming refresher and intro to C programming Applied mechatronics Programming refresher and intro to C programming Sven Gestegård Robertz sven.robertz@cs.lth.se Department of Computer Science, Lund University 2018 Outline 1 C programming intro 2

More information

CSC209: Software tools. Unix files and directories permissions utilities/commands Shell programming quoting wild cards files

CSC209: Software tools. Unix files and directories permissions utilities/commands Shell programming quoting wild cards files CSC209 Review CSC209: Software tools Unix files and directories permissions utilities/commands Shell programming quoting wild cards files ... and systems programming C basic syntax functions arrays structs

More information

CSC209: Software tools. Unix files and directories permissions utilities/commands Shell programming quoting wild cards files. Compiler vs.

CSC209: Software tools. Unix files and directories permissions utilities/commands Shell programming quoting wild cards files. Compiler vs. CSC209 Review CSC209: Software tools Unix files and directories permissions utilities/commands Shell programming quoting wild cards files... and systems programming C basic syntax functions arrays structs

More information

CSCI 171 Chapter Outlines

CSCI 171 Chapter Outlines Contents CSCI 171 Chapter 1 Overview... 2 CSCI 171 Chapter 2 Programming Components... 3 CSCI 171 Chapter 3 (Sections 1 4) Selection Structures... 5 CSCI 171 Chapter 3 (Sections 5 & 6) Iteration Structures

More information

Ar r ays and Pointer s

Ar r ays and Pointer s Ar r ays and Pointer s Using Bloodshed Dev-C++ Heejin Park Hanyang University 2 Introduction Arrays Multidimensional Arrays Pointers and Arrays Functions, Arrays, and Pointers Pointer Operations Protecting

More information

Lecture 10 Notes Linked Lists

Lecture 10 Notes Linked Lists Lecture 10 Notes Linked Lists 15-122: Principles of Imperative Computation (Spring 2016) Frank Pfenning, Rob Simmons, André Platzer 1 Introduction In this lecture we discuss the use of linked lists to

More information

Memory, Arrays & Pointers

Memory, Arrays & Pointers 1 Memory, Arrays & Pointers Memory int main() { char c; int i,j; double x; c i j x 2 Arrays Defines a block of consecutive cells int main() { int i; int a[3]; i a[0] a[1] a[2] Arrays - the [ ] operator

More information

Review of the C Programming Language for Principles of Operating Systems

Review of the C Programming Language for Principles of Operating Systems Review of the C Programming Language for Principles of Operating Systems Prof. James L. Frankel Harvard University Version of 7:26 PM 4-Sep-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights

More information

Machine Problem 1: A Simple Memory Allocator

Machine Problem 1: A Simple Memory Allocator Machine Problem 1: A Simple Memory Allocator Introduction In this machine problem, you are to develop a simple memory allocator that implements the functions my malloc() and my free(), very similarly to

More information

Lecture 14. No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions?

Lecture 14. No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions? Lecture 14 No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions? Friday, February 11 CS 215 Fundamentals of Programming II - Lecture 14 1 Outline Static

More information

CSE 100: C++ TEMPLATES AND ITERATORS

CSE 100: C++ TEMPLATES AND ITERATORS CSE 100: C++ TEMPLATES AND ITERATORS Announcements iclickers: Please register at ted.ucsd.edu. Start ASAP!! For PA1 (Due next week). 10/6 grading and 10/8 regrading How is Assignment 1 going? A. I haven

More information

Chapter 2. Procedural Programming

Chapter 2. Procedural Programming Chapter 2 Procedural Programming 2: Preview Basic concepts that are similar in both Java and C++, including: standard data types control structures I/O functions Dynamic memory management, and some basic

More information

Overview of today s lecture. Quick recap of previous C lectures. Introduction to C programming, lecture 2. Abstract data type - Stack example

Overview of today s lecture. Quick recap of previous C lectures. Introduction to C programming, lecture 2. Abstract data type - Stack example Overview of today s lecture Introduction to C programming, lecture 2 -Dynamic data structures in C Quick recap of previous C lectures Abstract data type - Stack example Make Refresher: pointers Pointers

More information

Lecture Notes on Queues

Lecture Notes on Queues Lecture Notes on Queues 15-122: Principles of Imperative Computation Frank Pfenning Lecture 9 September 25, 2012 1 Introduction In this lecture we introduce queues as a data structure and linked lists

More information

My malloc: mylloc and mhysa. Johan Montelius HT2016

My malloc: mylloc and mhysa. Johan Montelius HT2016 1 Introduction My malloc: mylloc and mhysa Johan Montelius HT2016 So this is an experiment where we will implement our own malloc. We will not implement the world s fastest allocator, but it will work

More information

PESIT-BSC Department of Science & Humanities

PESIT-BSC Department of Science & Humanities LESSON PLAN 15PCD13/23 PROGRAMMING IN C AND DATA Course objectives: STRUCTURES The objective of this course is to make students to learn basic principles of Problem solving, implementing through C programming

More information

Midterm Review. PIC 10B Spring 2018

Midterm Review. PIC 10B Spring 2018 Midterm Review PIC 10B Spring 2018 Q1 What is size t and when should it be used? A1 size t is an unsigned integer type used for indexing containers and holding the size of a container. It is guarenteed

More information

Introduction to C Language (M3-R )

Introduction to C Language (M3-R ) Introduction to C Language (M3-R4-01-18) 1. Each question below gives a multiple choice of answers. Choose the most appropriate one and enter in OMR answer sheet supplied with the question paper, following

More information

Pebbles Kernel Specification September 26, 2004

Pebbles Kernel Specification September 26, 2004 15-410, Operating System Design & Implementation Pebbles Kernel Specification September 26, 2004 Contents 1 Introduction 2 1.1 Overview...................................... 2 2 User Execution Environment

More information

COMP322 - Introduction to C++ Lecture 02 - Basics of C++

COMP322 - Introduction to C++ Lecture 02 - Basics of C++ COMP322 - Introduction to C++ Lecture 02 - Basics of C++ School of Computer Science 16 January 2012 C++ basics - Arithmetic operators Where possible, C++ will automatically convert among the basic types.

More information

CS 11 C track: lecture 5

CS 11 C track: lecture 5 CS 11 C track: lecture 5 Last week: pointers This week: Pointer arithmetic Arrays and pointers Dynamic memory allocation The stack and the heap Pointers (from last week) Address: location where data stored

More information

dynamic memory allocation

dynamic memory allocation Dynamic memory allocation in C The concept of dynamic memory allocation in c language enables the C programmer to allocate memory at runtime. Dynamic memory allocation in c language is possible by 4 functions

More information

CSci 4061 Introduction to Operating Systems. Programs in C/Unix

CSci 4061 Introduction to Operating Systems. Programs in C/Unix CSci 4061 Introduction to Operating Systems Programs in C/Unix Today Basic C programming Follow on to recitation Structure of a C program A C program consists of a collection of C functions, structs, arrays,

More information

Memory Corruption 101 From Primitives to Exploit

Memory Corruption 101 From Primitives to Exploit Memory Corruption 101 From Primitives to Exploit Created by Nick Walker @ MWR Infosecurity / @tel0seh What is it? A result of Undefined Behaviour Undefined Behaviour A result of executing computer code

More information

So far, system calls have had easy syntax. Integer, character string, and structure arguments.

So far, system calls have had easy syntax. Integer, character string, and structure arguments. Pointers Page 1 So far, system calls have had easy syntax Wednesday, September 30, 2015 10:45 AM Integer, character string, and structure arguments. But this is not always true. Today, we begin to explore

More information

CSE 333 Autumn 2014 Midterm Key

CSE 333 Autumn 2014 Midterm Key CSE 333 Autumn 2014 Midterm Key 1. [3 points] Imagine we have the following function declaration: void sub(uint64_t A, uint64_t B[], struct c_st C); An experienced C programmer writes a correct invocation:

More information

Static Code Analysis - CERT C Secure Code Checking

Static Code Analysis - CERT C Secure Code Checking Static Code Analysis - CERT C Secure Code Checking Frozen Content Modified by on 6-Nov-2013 Related Videos CERT Code Checking The high-level C code written for an embedded software project can sometimes

More information

Microsoft Whole-Testpaper placement paper Question and answers. 9. Give a very good method to count the number of ones in a "n" (e.g. 32) bit number.

Microsoft Whole-Testpaper placement paper Question and answers. 9. Give a very good method to count the number of ones in a n (e.g. 32) bit number. www.alljntuworld.in Microsoft Whole-Testpaper placement paper Question and answers Algorithms and Programming 1. Given a rectangular (cuboidal for the puritans) cake with a rectangular piece removed (any

More information

CS6202 - PROGRAMMING & DATA STRUCTURES I Unit IV Part - A 1. Define Stack. A stack is an ordered list in which all insertions and deletions are made at one end, called the top. It is an abstract data type

More information

Pointers. 1 Background. 1.1 Variables and Memory. 1.2 Motivating Pointers Massachusetts Institute of Technology

Pointers. 1 Background. 1.1 Variables and Memory. 1.2 Motivating Pointers Massachusetts Institute of Technology Introduction to C++ Massachusetts Institute of Technology ocw.mit.edu 6.096 Pointers 1 Background 1.1 Variables and Memory When you declare a variable, the computer associates the variable name with a

More information

Lecture 8 Data Structures

Lecture 8 Data Structures Lecture 8 Data Structures 15-122: Principles of Imperative Computation (Spring 2018) Frank Pfenning, André Platzer, Rob Simmons, Iliano Cervesato In this lecture we introduce the idea of imperative data

More information

SISTEMI EMBEDDED. Stack, Subroutine, Parameter Passing C Storage Classes and Scope. Federico Baronti Last version:

SISTEMI EMBEDDED. Stack, Subroutine, Parameter Passing C Storage Classes and Scope. Federico Baronti Last version: SISTEMI EMBEDDED Stack, Subroutine, Parameter Passing C Storage Classes and Scope Federico Baronti Last version: 20160314 Stack A stack is an abstract data structure managed according to a last-in-first-out

More information

Lecture Notes on Types in C

Lecture Notes on Types in C Lecture Notes on Types in C 15-122: Principles of Imperative Computation Frank Pfenning, Rob Simmons Lecture 20 April 2, 2013 1 Introduction In lecture 18, we emphasized the things we lost by going to

More information

First of all, it is a variable, just like other variables you studied

First of all, it is a variable, just like other variables you studied Pointers: Basics What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the address (rather than the value)

More information