/*
 * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
 *
 * Copyright (C) 2002-2010 Aleph One Ltd.
 *   for Toby Churchill Ltd and Brightstar Engineering
 *
 * Created by Charles Manning <charles@aleph1.co.uk>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 2.1 as
 * published by the Free Software Foundation.
 *
 * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
 */


#ifndef __YAFFS_QSORT_H__
#define __YAFFS_QSORT_H__

#ifdef __KERNEL__
#include <linux/sort.h>

extern void yaffs_qsort(void *const base, size_t total_elems, size_t size,
			int (*cmp)(const void *, const void *)){
	sort(base, total_elems, size, cmp, NULL);
}

#else

extern void yaffs_qsort(void *const base, size_t total_elems, size_t size,
			int (*cmp)(const void *, const void *));

#endif
#endif
