smgt->no_alloc_from_sys = g_scatter.no_alloc_from_sys;
return 0;
}
+int codec_mm_scatter_size(int is_tvp)
+{
+ struct codec_mm_scatter_mgt *smgt;
+ smgt = codec_mm_get_scatter_mgt(is_tvp ? 1 : 0);
+
+ return smgt->total_page_num;
+}
+EXPORT_SYMBOL(codec_mm_scatter_size);
int codec_mm_scatter_mgt_delay_free_swith(
int on,
int is_tvp)
{
struct codec_mm_scatter_mgt *smgt;
- unsigned long ret = 0;
smgt = codec_mm_get_scatter_mgt(is_tvp);
codec_mm_list_lock(smgt);
}
codec_mm_list_unlock(smgt);
if (on && wait_size_M > 0 && !is_tvp) {
- u64 start_time = get_jiffies_64();
- int try_max = 10;
-
smgt->force_cache_on = 1;
smgt->force_cache_page_cnt = wait_size_M >> PAGE_SHIFT;
smgt->delay_free_timeout_jiffies64 =
get_jiffies_64() + 10000 * HZ/1000;
codec_mm_schedule_delay_work(smgt, 0, 1);/*start cache*/
+#if 0
while (smgt->total_page_num < smgt->force_cache_page_cnt) {
if (smgt->cache_sc &&
(smgt->cached_pages >=
smgt->force_cache_on = 0;
smgt->delay_free_timeout_jiffies64 =
get_jiffies_64() + delay_ms * HZ/1000;
+#endif
} else if (on) {
codec_mm_schedule_delay_work(smgt, 0, 1);
} else {
(smgt->no_cache_size_M * (SZ_1M >> PAGE_SHIFT)))) {
/*have enough pages for most movies.*/
/*don't cache more.*/
- if (smgt->force_cache_on)
- complete(&smgt->complete);
+ if (smgt->force_cache_on) {
+ smgt->force_cache_on = 0;
+ smgt->delay_free_timeout_jiffies64 =
+ get_jiffies_64() + 2000 * HZ/1000;
+ }
} else if ((smgt->cached_pages < smgt->keep_size_PAGE) ||
(smgt->force_cache_on &&/*on star cache*/
(smgt->total_page_num < smgt->force_cache_page_cnt))
smgt->force_cache_on &&
(smgt->cached_pages >=
smgt->force_cache_page_cnt)) {
- complete(&smgt->complete);
+ smgt->force_cache_on = 0;
+ smgt->delay_free_timeout_jiffies64 =
+ get_jiffies_64() + 2000 * HZ/1000;
}
} else if ((smgt->cached_pages >
(smgt->keep_size_PAGE + 1000)) &&
int page_num, int istvp);
int codec_mm_scatter_alloc_want_pages(struct codec_mm_scatter *mms,
int want_pages);
+int codec_mm_scatter_size(int is_tvp);
int codec_mm_scatter_mgt_delay_free_swith(int on, int delay_ms,
int wait_size_M, int istvp);
int codec_mm_dump_scatter(struct codec_mm_scatter *mms, void *buf, int size);