Пример #1
0
 // Transfer Address.
 bool SPIFlash::_transferAddress(void) {
   if (address4ByteEnabled) {
     _nextByte(WRITE, Highest(_currentAddress));
   }
   _nextByte(WRITE, Higher(_currentAddress));
   _nextByte(WRITE, Hi(_currentAddress));
   _nextByte(WRITE, Lo(_currentAddress));
   return true;
 }
Пример #2
0
FileDesc *HostMachine::SortFDList(FileDesc *i)
{
	if(!i) return i;

	/* count */
	int c = 0;
	FileDesc *ptr = i;
	while(ptr)
	{
		c++;
		ptr = ptr->Next;
	}

	if(c == 1)
		return i;

	if(c == 2)
	{
		/* just consider order, and return */
		if(!Higher(i, i->Next))
			return i;

		/* flip around */
		ptr = i;
		i = i->Next;
		i->Next = ptr;
		i->Next->Next = NULL;
		return i;
	}

	/* more than 2, so pick a pivot and recurse */
	FileDesc *pivot = i, *Less = NULL, *More = NULL;
	i = i->Next;
	while(i)
	{
		FileDesc *N = i->Next;

		if(Higher(i, pivot))
		{
			i->Next = More;
			More = i;
		}
		else
		{
			i->Next = Less;
			Less = i;
		}

		i = N;
	}

	Less = SortFDList(Less);
	More = SortFDList(More);

	/* re-integrate list */
	if(ptr = Less)
	{
		while(ptr->Next)
			ptr = ptr->Next;
		ptr->Next = pivot;
	}
	else
		Less = pivot;
	pivot->Next = More;

	return Less;
}