There is no function that waits shorter than microseconds, sorry.
But you can wait with
asm volatile("nop");
and with my Arduino Diecimila (atmega168 at 16MHz)
the following code is gets very close to 120kHz:
uint8_t outPin = 2;
void setup()
{
pinMode(outPin, OUTPUT);
digitalWrite(outPin, LOW);
}
void loop()
{
digitalWrite(outPin, HIGH); // sets the pin on
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
digitalWrite(outPin, LOW); // sets the pin off
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
asm volatile("nop");
}
maybe on your hardware you must try more or less of the nop expressions... and I do not recommend this solution. A timer would be the better choice, but you asked for a software solution.
Oh and your Arduino should do nothing else while he is running this code... why do you need this 120kHz?