• marko's avatar
    branches/innodb+: Merge revisions 5090:5091 from branches/zip: · 61bddcc8
    marko authored
    (Ran doxygenify.pl conversion locally, then merged and checked consistency.)
      ------------------------------------------------------------------------
      r5091 | marko | 2009-05-25 09:30:14 +0300 (Mon, 25 May 2009) | 33 lines
    
      branches/zip: Convert the function comments to Doxygen format.
    
      This patch was created by running the following commands:
    
      for i in */*[ch]; do doxygenify.pl $i; done
      perl -i -pe 's#\*{3} \*/$#****/#' */*[ch]
    
      where doxygenify.pl is
      https://svn.innodb.com/svn/misc/trunk/tools/doxygenify.pl r510
    
      Verified the consistency as follows:
    
      (0) not too many /* in: */ or /* out: */ comments left in the code:
      grep -l '/\*\s*\(in\|out\)[,:/]' */*[ch]
    
      (1) no difference when ignoring blank lines, after stripping all
      C90-style /* comments */, including multi-line ones, before and after
      applying this patch:
    
      perl -i -e 'undef $/;while(<ARGV>){s#/\*(.*?)\*/##gs;print}' */*[ch]
      diff -I'^\s*$' --exclude .svn -ru TREE1 TREE2
    
      (2) after stripping @return comments and !<, generated a diff and omitted
      the hunks where /* out: */ function return comments were removed:
    
      perl -i -e'undef $/;while(<ARGV>){s#!<##g;s#\n\@return\t.*?\*/# \*/#gs;print}'\
       */*[ch]
      svn diff|
      perl -e 'undef $/;$_=<>;s#\n-\s*/\* out[:,]([^\n]*?)(\n-[^\n]*?)*\*/##gs;print'
    
      Some unintended changes were left.  These will be removed in a
      subsequent patch.
      ------------------------------------------------------------------------
    61bddcc8
ut0wqueue.h 2.41 KB
/*****************************************************************************

Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved.

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA

*****************************************************************************/

/***********************************************************************
A Work queue. Threads can add work items to the queue and other threads can
wait for work items to be available and take them off the queue for
processing.
************************************************************************/

#ifndef IB_WORK_QUEUE_H
#define IB_WORK_QUEUE_H

#include "ut0list.h"
#include "mem0mem.h"
#include "os0sync.h"
#include "sync0types.h"

typedef struct ib_wqueue_struct ib_wqueue_t;

/********************************************************************
Create a new work queue.
@return	work queue */
UNIV_INTERN
ib_wqueue_t*
ib_wqueue_create(void);
/*===================*/

/********************************************************************
Free a work queue. */
UNIV_INTERN
void
ib_wqueue_free(
/*===========*/
	ib_wqueue_t*	wq);	/*!< in: work queue */

/********************************************************************
Add a work item to the queue. */
UNIV_INTERN
void
ib_wqueue_add(
/*==========*/
	ib_wqueue_t*	wq,	/*!< in: work queue */
	void*		item,	/*!< in: work item */
	mem_heap_t*	heap);	/*!< in: memory heap to use for allocating the
				list node */

/********************************************************************
Wait for a work item to appear in the queue.
@return	work item */
UNIV_INTERN
void*
ib_wqueue_wait(
/*===========*/
	ib_wqueue_t*	wq);	/*!< in: work queue */

/* Work queue. */
struct ib_wqueue_struct {
	mutex_t		mutex;	/* mutex protecting everything */
	ib_list_t*	items;	/* work item list */
	os_event_t	event;	/* event we use to signal additions to list */
};

#endif