diff --git a/includes/common.inc b/includes/common.inc
index 5f7cdb8..d1e939f 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -5044,6 +5044,9 @@ function drupal_cron_run() {
     // Register shutdown callback
     drupal_register_shutdown_function('drupal_cron_cleanup');
 
+    // Make sure drupal_cron_is_running() knows we're calling the hooks.
+    $GLOBALS['drupal_cron_is_running'] = TRUE;
+
     // Iterate through the modules calling their cron handlers (if any):
     foreach (module_implements('cron') as $module) {
       // Do not let an exception thrown by one module disturb another.
@@ -5055,6 +5058,9 @@ function drupal_cron_run() {
       }
     }
 
+    // We're done calling hooks for the moment.
+    $GLOBALS['drupal_cron_is_running'] = FALSE;
+
     // Record cron time
     variable_set('cron_last', REQUEST_TIME);
     watchdog('cron', 'Cron run completed.', array(), WATCHDOG_NOTICE);
@@ -5083,6 +5089,23 @@ function drupal_cron_run() {
 }
 
 /**
+ * Check if cron hooks are being called and queues are being run.
+ *
+ * @return
+ *   Returns TRUE if one of the following is true:
+ *     - hook_cron() is being actively called.
+ *     - queues are being processed right now.
+ */
+function drupal_cron_is_running() {
+  global $drupal_cron_is_running;
+
+  if (!isset($drupal_cron_is_running)) {
+    $drupal_cron_is_running = FALSE;
+  }
+  return $drupal_cron_is_running;
+}
+
+/**
  * Shutdown function for cron cleanup.
  */
 function drupal_cron_cleanup() {
