Index: uspace/lib/c/generic/rndgen.c
===================================================================
--- uspace/lib/c/generic/rndgen.c	(revision 221daa5dc253f7938c88334377cda6c9fde54ed2)
+++ uspace/lib/c/generic/rndgen.c	(revision 0b1f01c852f49bfda51d70983ad40bace28195a1)
@@ -92,4 +92,30 @@
 }
 
+/** Generate random 16-bit integer.
+ *
+ * @param rndgen Random number generator
+ * @param rw Place to store random 16-bit integer
+ * @return EOK on success or error code
+ */
+errno_t rndgen_uint16(rndgen_t *rndgen, uint16_t *rw)
+{
+	int i;
+	uint8_t b;
+	uint16_t w;
+	errno_t rc;
+
+	w = 0;
+	for (i = 0; i < 2; i++) {
+		rc = rndgen_uint8(rndgen, &b);
+		if (rc != EOK)
+			return rc;
+
+		w = (w << 8) | b;
+	}
+
+	*rw = w;
+	return EOK;
+}
+
 /** Generate random 32-bit integer.
  *
Index: uspace/lib/c/include/rndgen.h
===================================================================
--- uspace/lib/c/include/rndgen.h	(revision 221daa5dc253f7938c88334377cda6c9fde54ed2)
+++ uspace/lib/c/include/rndgen.h	(revision 0b1f01c852f49bfda51d70983ad40bace28195a1)
@@ -47,4 +47,5 @@
 extern void rndgen_destroy(rndgen_t *);
 extern errno_t rndgen_uint8(rndgen_t *, uint8_t *);
+extern errno_t rndgen_uint16(rndgen_t *, uint16_t *);
 extern errno_t rndgen_uint32(rndgen_t *, uint32_t *);
 
